Olá, pessoal!
Tentando várias vezes para testar fechar janela várias vezes em cada item do menu para chamar uma janela mas ocorreu erro. veja o mensagem de erro em baixo:
[quote]
Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Unknown Source)
at javax.swing.JLayeredPane.addImpl(Unknown Source)
at javax.swing.JDesktopPane.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at Teste.JanelaInterno.actionPerformed(JanelaInterno.java:128)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)[/quote]
Código da java é
public class JanelaInterno extends JFrame implements ActionListener {
JMenu mAluno, mProf;
JDesktopPane dtpPane;
private Janela1 janela1;
private Janela2 janela2;
public JanelaInterno() {
super("Janela Interno");
dtpPane = new JDesktopPane();
this.setJMenuBar(barraMenu());
this.setContentPane(dtpPane);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
this.setVisible(true);
}
public JMenuBar barraMenu() {
JMenuBar barra = new JMenuBar();
String[] itemAluno1 = { "Disciplina", "Conceitos" };
mAluno = menu("Aluno", itemAluno1);
barra.add(mAluno);
String[] itemProfConceito = { "Consulta Conceitos",
"Atribuir Conceitos" };
String[] itemProfFaltas = { "Verifica faltas", "Atribuir Faltas" };
JMenu[] mProfSubMenu = { menu("Conceitos", itemProfConceito),
menu("Faltas", itemProfFaltas) };
mProf = menu("Professor", mProfSubMenu);
barra.add(mProf);
return barra;
}
@SuppressWarnings("unused")
private JMenu menu(String nome) {
JMenu j = new JMenu(nome);
j.setActionCommand(nome.toLowerCase());
j.addActionListener(this);
return j;
}
private JMenu menu(String nome, String[] nomeItem) {
JMenu j = new JMenu(nome);
for (int i = 0; i < nomeItem.length; i++) {
j.add(item(nomeItem[i]));
}
return j;
}
private JMenu menu(String nome, JMenu[] submenu) {
JMenu j = new JMenu(nome);
for (int i = 0; i < submenu.length; i++) {
j.add(submenu[i]);
}
return j;
}
@SuppressWarnings("unused")
private JMenu menu(String nome, JMenuItem[] nomeItem) {
JMenu j = new JMenu(nome);
for (int i = 0; i < nomeItem.length; i++) {
j.add(item(nomeItem[i]));
}
return j;
}
private JMenuItem item(String nome) {
JMenuItem j = new JMenuItem(nome);
j.setActionCommand(nome.replace(" ", "_").toLowerCase());
j.addActionListener(this);
return j;
}
private JMenuItem item(JMenuItem j) {
System.out.println("JmenuItem: "
+ j.getText().toString().toLowerCase().replace(" ", "_"));
j.setActionCommand(j.getText().toString().toLowerCase()
.replace(" ", "_"));
j.addActionListener(this);
return j;
}
@Override
public void actionPerformed(ActionEvent e) {
if ("disciplina".equals(e.getActionCommand())) {
if (janela2 != null) {
janela2.dispose();
}
if (janela1 == null) {
janela1 = new Janela1();
janela1.setVisible(true);
dtpPane.add(janela1);
}
}
if ("conceitos".equals(e.getActionCommand())) {
// verifica se as janelas está aberta e fecha na janela1.
if (janela1 != null) {
janela1.dispose();
}
// se janela não está aberta apenas abre;
if (janela2 == null) {
janela2 = new Janela2();
janela2.setVisible(true);
dtpPane.add(janela2);
}
}
if ("consulta_conceitos".equals(e.getActionCommand())) {
System.out.println("Consulta Conceitos");
}
if ("atribuir_conceitos".equals(e.getActionCommand())) {
System.out.println("Atribuir Conceitos");
}
if ("verifica_faltas".equals(e.getActionCommand())) {
System.out.println("Verifica faltas");
}
if ("atribuir_faltas".equals(e.getActionCommand())) {
System.out.println("Atribuir Faltas");
}
}
}
Espero até me ajuda para uma dica a resolver esse problemas