Существует jframe с двумя button (button1, button2) по нажатию на любой из button открывается jdialog в котором находятся две jpanel (jpanel1, jpanel2)
Реализовал код таким образом:
Щелкую на button1 - открывается мой jdialog с активной панелью jpanel1 (jpanel2 не показывается setVisible(false))
Аналогично на jbutton2 - открывается мой jdialog с активной панелью jpanel2 (jpanel1 не показывается setVisible(false))
Но размер диалогового окна принимает значение как от двух jpanel при любом из условий
Стоит параметры при открытие диалога: setResizable(false);
Как подогнать размер jdialog который будет зависеть от размера активной jpanel ? Либо вручную прописать размеры
Пробовал setSize(width, height) - не сработало
Вообще всё зависит от того с каким Layout ты работаешь, если он есть необходимо определять PreferredSize. Так же в слушателе кнопки передавать значение диалогу, для того что бы он изменил свой размер.
public class Main {
public static void main(String arg[]) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(500,500);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
JButton button = new JButton("Кнопка 1");
JButton button1 = new JButton("Кнопка 2");
frame.add(button);
frame.add(button1);
JDialog dialog = new JDialog(frame, "диалог");
dialog.setVisible(false);
JPanel panel = new JPanel();
JPanel panel1 = new JPanel();
dialog.add(panel);
dialog.add(panel1);
panel.setBackground(Color.RED);
panel1.setBackground(Color.BLUE);
dialog.setLayout(new FlowLayout());
dialog.setResizable(false);
button.addActionListener(e -> {
panel.setVisible(true);
panel.setPreferredSize(new Dimension( 100,100));
panel1.setVisible(false);
dialog.setSize(panel.getPreferredSize());
dialog.setVisible(true);
});
button1.addActionListener(e -> {
panel1.setVisible(true);
panel.setVisible(false);
panel1.setPreferredSize(new Dimension( 200,200));
dialog.setSize(panel1.getPreferredSize());
dialog.setVisible(true);
});
}
}
Продвижение своими сайтами как стратегия роста и независимости