Изменить высоту JTextField на Swing

Я пытаюсь зафиксировать высоту текстового поля amountField, но не могу.

Я бы хотел, чтобы высота amountField имела ту же высоту, что и JComboBox, так как он выше, поэтому выглядит лучше.

Прямо сейчас JTextField выглядит очень высоким по сравнению с остальным дизайном.

Я перепробовал все, что прочитал на этом форуме, но, похоже, ничего не работает.

Я не знаю, уместно ли это, но вся эта JPanel (WithdrawalScreen) находится внутри другой JPanel с BorderLayout. Эта панель является его центральной частью

Благодарность

PictureHere

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 будет. Сделайте несколько экспериментов самостоятельно, и вы найдете способ, который соответствует вашим потребностям.

Ссылка, которая поможет вам: визуальное руководство для менеджеров по макету.


Есть идеи?

10000