Я сделал это немного по-другому, и это служит цели. У меня есть несколько классов. Они расширяют JPanel, служат различным целям и используют JDialogs для получения пользовательских отзывов.
Типичный класс будет содержать необходимые поля, кнопки сохранения и отмены.
открытый класс EnterpriseGUI extends javax.swing.JPanel {...} будет выглядеть следующим образом:
![JPanel class in designer mode](https://i.stack.imgur.com/RYDfc.png)
Класс EnterpriseGUI имеет закрытую переменную jdialog и метод для установки jdialog. Также ActionEvent для кнопки «Сохранить» и «Отмена».
private JDialog jdialog;
public void setJDialog(JDialog jdialog)
{
this.jdialog = jdialog;
}
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {
//Do your stuff..
jdialog.dispose();
}
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {
//Discard your stuff..
jdialog.dispose();
}
Наконец, я создаю экземпляр EnterpriseGUI из любого другого класса по мере необходимости и встраиваю его в JDialog.
Class OtherClass{
private JDialog dialog;
private EnterpriseGUI = new enterprisegui();
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
this.dialog = new JDialog(this, "My dialog", true);
this.dialog.setResizable(false);
enterprisegui.setJDialog(dialog);
this.dialog.getContentPane().add(enterprisegui);
this.dialog.pack();
Dimension Size = Toolkit.getDefaultToolkit().getScreenSize();
this.dialog.setLocation(new Double((Size.getWidth()/2) -
(dialog.getWidth()/2)).intValue(), new Double((Size.getHeight()/2) -
(dialog.getHeight()/2)).intValue());
this.dialog.setVisible(true);
}
}