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.
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]