Dispose de JInternalFrame a partir de uma outra classe

Pessoal,

Tenho as classes:
WindowMain extends JFrame -> Classe que implementa a janela principal da app. Possui um menu com a opção Sobre que é implementada na classe WindowAbout extends JPanel.

class WindowMain extends JFrame {
	
	//Attributes
	private JMenuBar menuBar;
	private JMenu menuFile;
	private JMenu menuHelp;
	private JMenuItem menuItemContacts;
	private JMenuItem menuItemExit;
	private JMenuItem menuItemHelp;
	public  JDesktopPane desktop;
	public  JInternalFrame frame;
	public  Container container;
	
	/**
	 * Please have a look when you have free time.
	 */
	private static final long serialVersionUID = 1L;

	//Methods
	protected WindowMain()
	{
		super("Agenda");
		
		//Menus
		menuBar = new JMenuBar();

		//Building a Menu - Option File
		menuFile = new JMenu("File");
		menuFile.setMnemonic(KeyEvent.VK_F);
		menuBar.add(menuFile);
				
		//a group of JMenuItems - File:Contacts
		menuItemContacts = new JMenuItem("Contacts",KeyEvent.VK_C);
		menuItemContacts.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));
		menuItemContacts.addActionListener(new MyListenerMenu());
		menuFile.add(menuItemContacts);
		
		//Adding a separator
		menuFile.addSeparator();
		
		//a group of JMenuItems - File:Exit
		menuItemExit = new JMenuItem("Exit",KeyEvent.VK_E);
		menuItemExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK));
		menuItemExit.addActionListener(new MyListenerMenu());
		menuFile.add(menuItemExit);
		

		//Building a Menu - Option Help
		menuHelp = new JMenu("Help");
		menuHelp.setMnemonic(KeyEvent.VK_H);
		menuBar.add(menuHelp);
		
		//a group of JMenuItems - Help:About
		menuItemHelp = new JMenuItem("About",KeyEvent.VK_A);
		menuItemHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, ActionEvent.ALT_MASK));
		menuItemHelp.addActionListener(new MyListenerMenu());
		menuHelp.add(menuItemHelp);
		
		//Adding a Menu bar in JFRAME
		this.setJMenuBar(menuBar);	
				
		// Creating a JDesktopPane
		desktop = new JDesktopPane();
		desktop.setBackground(Color.gray);
		this.getContentPane().add(desktop);
	}
	
	private class MyListenerMenu implements ActionListener {
		
		public void actionPerformed(ActionEvent event) {
			if(event.getSource() == menuItemContacts){
				JOptionPane.showMessageDialog(null,"Contacts Pressed");			
			}
			if(event.getSource() == menuItemExit){
				System.exit(0);
			}
			if(event.getSource() == menuItemHelp){
				
				frame = new JInternalFrame("About",false,true,false,false);
				container = frame.getContentPane();
				WindowAbout windowAbout = new WindowAbout();

				container.add(windowAbout, BorderLayout.CENTER );

				frame.pack();

				desktop.add(frame);
				frame.setVisible(true);
				
			}
		}
	}
	
}

E abaixo o código da classe WindowAbout

class WindowAbout extends JPanel {

	//Attributes
	private JLabel text1;
	private JLabel text2;
	private JButton okButton;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	//Methods
	protected WindowAbout(){
		
		text1 = new JLabel();
		text2 = new JLabel();
		
		text1.setText("Agenda 1.0");
		this.add(text1);
		text2.setText("Developed by Lifeguide");
		this.add(text2);
		
		okButton = new JButton("Ok");
		this.add(okButton);
		
		ButtonHandler handler = new ButtonHandler();
		okButton.addActionListener(handler);	
	
	}
	
	private class ButtonHandler implements ActionListener {

		public void actionPerformed(ActionEvent event) 
		{
			if(event.getSource() == okButton){	
			
		         [b]//gostaria de conseguir efetuar o dispose da JInternalFrame aqui.[/b] 
			}
		}
		
	}
}

Na tentativa de solucionar o problema, alterei a tipagem de alguns atributos da classe WindowMain para Publico, estava imaginando que uma vez conseguindo enxergá-los eu poderia simplesmente efetuar um dispose da JInternalFrame.

Alguém por gentileza, poderia me dar uma luz?

A idéia não é mudar o requisito (—Do ponto de vista de funcionalidade eu poderia simplesmente retirar o botão OK já que tenho o botão close da própria JInternalFrame.) Mas se eu fizer isso não terei aprendido algo que tenho certeza que possa ser feito mas que infelizmente não tenho conseguido fazer. :frowning:

Como o intuito é evoluir no conhecimento da linguagem, fiquem a vontade em opinar a respeito do restante do código, tipo se fariam algo de uma forma diferente e tal.

Muito obrigado pessoal.

[size=9]"Recomeçando"[/size]

Criei um método na classe WindowMain com o intuito de chamá-lo na classe WindowAbout. A idéia é que ele só dispare o método dispose().

	public void DisposalJInternalFrame(){
		frame.dispose();
	}

E a chamada na classe WindowAbout

private class ButtonHandler implements ActionListener {

		public void actionPerformed(ActionEvent event) 
		{
			if(event.getSource() == okButton){	
				WindowMain window = new WindowMain();
				window.DisposalJInternalFrame();				
			}
		}
		
	}

Mas infelizmente não funcionou.
Se eu chamar o método DisposalJInternalFrame() de dentro da classe WindowMain funciona --mas de outra classe não. — como se ele se perdesse ou algo assim.

Alguém por gentileza pode me dar uma força ?

[size=9]“Recomeçando”[/size]