Я пытаюсь зафиксировать высоту текстового поля amountField, но не могу.
Я бы хотел, чтобы высота amountField имела ту же высоту, что и JComboBox, так как он выше, поэтому выглядит лучше.
Прямо сейчас JTextField выглядит очень высоким по сравнению с остальным дизайном.
Я перепробовал все, что прочитал на этом форуме, но, похоже, ничего не работает.
Я не знаю, уместно ли это, но вся эта JPanel (WithdrawalScreen) находится внутри другой JPanel с BorderLayout. Эта панель является его центральной частью
Благодарность
public class WithdrawalScreen extends JPanel {
Public JPanel init() {
this.setLayout(new GridLayout(0,1));
account = new JLabel("account");
accountSelect = new JComboBox(labels);
amount = new JLabel("amount");
amountField = new JTextField("");
submit = new JButton("SUBMIT");
this.add(account);
this.add(accountSelect);
this.add(amount);
this.add(amountField);
this.add(submit);
return this;
}
}
Всего 2 ответа
Попробуйте создать сетку с 5 строками и 1 столбцом. Я думаю, что высота испорчена, потому что вы не устанавливаете аргументы конструктора должным образом.
new GridLayout(5,1);
Расположение сетки будет растягивать компонент и давать одинаковый размер всем его компонентам. Чтобы сохранить размер каждого компонента по умолчанию, вы можете использовать BoxLayout
с параметром BoxLayout.Y_AXIS
в его конструкторе. Другой способ - использовать макет JPanel с другим макетом. Давайте скажем FlowLayout.
JTextField textField = new JTextField(10);
JPanel nestedPanel = new JPanel(new FlowLayout());
nestedPanel.add(textField);
gridLayoutPanel.add(nestedPanel);
JTextField
не будет растягиваться. nestedPanel
будет. Сделайте несколько экспериментов самостоятельно, и вы найдете способ, который соответствует вашим потребностям.
Ссылка, которая поможет вам: визуальное руководство для менеджеров по макету.