Как установить LayoutManager по умолчанию в PanelUI?
У меня есть наследники LookAndFeel и PanelUI. Я хочу сделать так, чтобы панелям по умолчанию задавался мой класс AutoLayout, однако, если я задаю его в методе installUI, он переопределяет менеджер компоновки, установленный после создания панелей.
Например:
JFrame frame = new JFrame("Demo JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);
JPanel panel = new JPanel(new GridLayout(2,0);
for (int i = 0; i < 5; i++) {
JButton button = new JButton("Button " + i);
panel.add(button);
}
frame.add(panel);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
System.out.println("Текущая компоновка: " + panel.getLayout().getClass().getSimpleName());
Результат:
У панели задана компоновка AutoLayout.
Ответы (1 шт):
По умолчанию используется FlowLayout.
Наглядное руководство по менеджерам макетов
FlowLayout— это менеджер макетов по умолчанию для каждойJPanel. Он просто размещает компоненты в одну строку, начиная новую строку, если его контейнер недостаточно широкий. Для получения дополнительных сведений см. Как использоватьFlowLayout.
Переопределить это нельзя. Но, вы можете расширить JPanel, чтобы установить свой макет:
public class MyPanel extends JPanel {
public MyPanel() {
setLayout(new AutoLayout());
}
}