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.