Puoi implementare la seconda classe all'interno dell'altra come una classe annidata...in questo modo non dovresti più avere il problema.
codice:
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class JButtonExample extends JFrame {
/**
*
*/
private static final long serialVersionUID = -9047187471312379634L;
private JDialog dialog;
private JButton okButton;
private JButton jDialogButton;
public JButtonExample() {
// Top Level Container
super("JButtonExample");
setBounds(10,35,200,70);
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER));
// Finestra di Dialogo inizialmente invisibile
dialog = new JDialog(this,"JDialog",false);
dialog.setBounds(250,20,300,100);
dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(BorderLayout.CENTER, new JLabel("Chiudi questa Finestra per continuare",JLabel.CENTER));
dialog.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
// Crazione Pulsanti
okButton = new JButton("OK");
jDialogButton = new JButton("Open Frame");
// Crea Ascoltatori (oberservers)
ActionListener okListener = new OkButtonListener();
ActionListener openActionListener = new JDialogButtonListener();
// Registra gli ascoltatori verso i pulsanti
okButton.addActionListener(okListener);
jDialogButton.addActionListener(openActionListener);
// OkButton come default Button
getRootPane().setDefaultButton(okButton);
//Aggiunge i pulsanti al top level Container
getContentPane().add(okButton);
getContentPane().add(jDialogButton);
setVisible(true);
}
public class JDialogButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
dialog.setVisibile(true);
}
}
}
Ciao.