JFrame frame = new JFrame();
frame.setSize(400, 300);
JPanel panel = new JPanel() {{
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
add(new JButton("button"));
add(new JTextField("Text"));
}};
frame.setContentPane(panel);
frame.setVisible(true);
Я хочу, чтобы JButton заполнял родительский макет, например JTextField. Так какая собственность контролировала это?
Попробуйте использовать BorderLayout
для быстрого решения.
setLayout(new BorderLayout(0,0));
add(new JButton("button"),BorderLayout.WEST);
add(new JTextField("Text"),BorderLayout.CENTER);
это должно сработать для вас
I want to make JButton fill parent layout like JTextField. So what property controlled it?
BoxLayout
учитывает «максимальный размер» компонента.
Максимальный размер кнопки - это ее «предпочтительный размер», поэтому, если вы хотите, чтобы кнопка увеличивалась, вам необходимо переопределить метод getMaximumSize()
кнопки, чтобы вернуть размер, по крайней мере, равный размеру вашего фрейма.
Или, как указано в комментариях, вы можете использовать:
GridLayout
, чтобы сделать все компоненты одинакового размераGridBagLayout
, позволяющий компонентам расти по мере необходимости.Прочтите раздел руководства по Swing на Использование менеджеров компоновки для получения дополнительной информации о вышеупомянутом.
Используйте
GridLayout
или, если вы предпочитаете что-то, что будет по-прежнему соответствовать ширине кнопки,GridBagLayout