Размеры диалогового окна (JDialog)

384
28 июля 2017, 00:32

Существует 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) - не сработало

Answer 1

Вообще всё зависит от того с каким 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);
    });
}
}
READ ALSO
markdown to Html ReactJs

markdown to Html ReactJs

Как в ReactJs Маркдаун перевести в HTML?

263
Как подключить css,js,картинки к node.js

Как подключить css,js,картинки к node.js

Здравствуйте,у меня проблема : Пытаюсь подключить css, js файлы и картинки к nodejs с помощью require , но он выдает ошибку при чтении css / js файлов (менял...

340