Это должно решить вашу проблему, так как VGR уже сказал ... покадрово Диалог будет следовать его родители:
public class FocusMain extends JFrame {
private static FocusMain frame;
private static JDialog dialog;
private JCheckBox checkBox;
private JPanel contentPane;
public static void main(String[] args) {
frame = new FocusMain();
frame.setVisible(true);
dialog = new JDialog(frame);
dialog.setSize(100, 100);
}
public FocusMain() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
setContentPane(contentPane);
checkBox = new JCheckBox("show dialog");
checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected()) {
dialog.setVisible(true);
} else {
dialog.setVisible(false);
}
}
});
contentPane.add(checkBox);
}
}
С расширенной JDialog вам нужно будет пройти родительский фрейм через конструктор и если ваш конструктор выглядит следующим образом: public ExtendedJDialog(JFrame parentFrame)
, то вы можете подключить его с его родительского фрейма с super(parentFrame);
в качестве первой строки в конструкторе ...
public class FocusMain extends JFrame {
private static FocusMain frame;
private static FocusDialog dialog;
private JCheckBox checkBox;
private JPanel contentPane;
public static void main(String[] args) {
frame = new FocusMain();
frame.setVisible(true);
dialog = new FocusDialog(frame);
}
public FocusMain() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
setContentPane(contentPane);
checkBox = new JCheckBox("show dialog");
checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected()) {
dialog.setVisible(true);
} else {
dialog.setVisible(false);
}
}
});
contentPane.add(checkBox);
}
}
и расширенный JDialog
public class FocusDialog extends JDialog {
public FocusDialog(JFrame parentFrame) {
super(parentFrame);
setSize(100, 100);
}
}
если вам нужен диалог, чтобы блокировать родитель, используйте super(parentFrame, true);
Создать MenuItem для второго окна в основном, это будет либо переключение между основным калькулятором и продвинутым. (например, Windows Calculator -> Scientific и т. д.) – Kenyanke
устранит проблему или это просто предложение эстетики? – Tomasz
Я в настоящий момент студент колледжа, и за последние два года я сделал много калькуляторов, проще всего было бы реализовать MenuItem. – Kenyanke