Um JMenuItem ou Jmenu qualquer chama uma classe Jframe nova
7 respostas
J
jrmendonca
Pessoal,
Desculpem-me o tema tão simples, mas sou totalmente iniciante em Java, então aí vai a pergunta.
Eu tenho 2 arquivos:
MenuPrincipal.java (que contem um JFRAME com JMENUBAR e etc…)
Sobre.java(que não tem nada de demais, apenas uma janela sobre o programa)
A pergunta é… como faço no evento do JMENUITEM para chamar a janela da classe Sobre.java?
defina um actionListener para este menu item… Dice: para criar uma janela do tipo Sobre, utilize JDialog ao invés de JFrame
J
jrmendonca
Eduardo, obrigado pela sua dica, porém o meu problema está sendo exatamente este. Eu já tenho um “listener no evento” tanto é que quando o usuário clica em um menu ele chama um JOptionPane criticando. Porém o que eu não estou conseguindo é que ele chame o arquivo Sobre.java …
Entendeu?
E
Edu4rd0
Bom, na verdade ele nao deve chamar o arquivo Sobre.java ele deve chamar no caso, o objeto Sobre, que corresponderia à classe Sobre… Ao clicar no menuitem, instancie o objeto correspondente
E
Edu4rd0
Depende de que tipo é o objeto Sobre, se for uma JDialog, poderias fazer assim:
Procure usar apenas components Swing, os componentes AWT não são mais atualizados, além de serem meio antigos, muito menos misture ambos, como você fez.
Não é necessário em cada classe que você for chamar especificar o seu pacote como “javax.swing.JFrame”, coloque os pacotes que você irá utilizar nos imports, ex:
importjava.awt.event.*;importjavax.swing.*;
Dê nome às suas variáveis, para que voce possa identifica-las melhor, evite utilzar nomes do tipo jMenu, procure usar algo do tipo, cadastroMenuItem…
Coloque o seu código dentro das tags [ code] e [ /code] no fórum
:thumbup:
carlosatila
Estou com o mesmo problema e fiz o que vc falou , mas ainda não consegui resolver, tem como vc colocar um exemplo aqui para fica mais fácil…
Valeu!!! :-o :mrgreen:
carlosatila
Obrigado Eduardo pela Força,mas eu fiz o meu código no netbeans , abaixo segue o meu código abaixo:
publicclassTelaInicialSistemaextendsjavax.swing.JFrameimplementsActionListener,ItemListener{/** Creates new form TelaInicialSistema */publicTelaInicialSistema(){initComponents();}/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */// <editor-fold defaultstate="collapsed" desc=" Generated Code ">privatevoidinitComponents(){menuBar1=newjava.awt.MenuBar();menu1=newjava.awt.Menu();popupMenu1=newjava.awt.PopupMenu();jMenuBar1=newjavax.swing.JMenuBar();jMenu1=newjavax.swing.JMenu();jMenu5=newjavax.swing.JMenu();jMenu2=newjavax.swing.JMenu();jMenu4=newjavax.swing.JMenu();jMenuItem1=newjavax.swing.JMenuItem();jMenuItem2=newjavax.swing.JMenuItem();jMenuItem3=newjavax.swing.JMenuItem();jMenu3=newjavax.swing.JMenu();jMenuItem5=newjavax.swing.JMenuItem();jMenuItem6=newjavax.swing.JMenuItem();menu1.setLabel("Menu");menuBar1.add(menu1);popupMenu1.setLabel("Teste");getContentPane().setLayout(null);setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jMenu1.setText("Administra\u00e7\u00e3o");jMenu1.addMouseListener(newjava.awt.event.MouseAdapter(){publicvoidmouseClicked(java.awt.event.MouseEventevt){Adm(evt);}});jMenuBar1.add(jMenu1);jMenu5.setText("Cadastro");jMenuBar1.add(jMenu5);jMenu2.setText("Digitaliza\u00e7\u00e3o");jMenuBar1.add(jMenu2);jMenu4.setText("Indexa\u00e7\u00e3o");jMenuItem1.setText("Imagem");jMenu4.add(jMenuItem1);jMenuItem2.setText("PDF");jMenu4.add(jMenuItem2);jMenuItem3.setText("Edi\u00e7\u00e3o");jMenu4.add(jMenuItem3);jMenuBar1.add(jMenu4);jMenu3.setText("Help");jMenuItem5.setText("Manual do Sistema");jMenu3.add(jMenuItem5);jMenuItem6.setText("Fale com o Fabricante");jMenu3.add(jMenuItem6);jMenuBar1.add(jMenu3);setJMenuBar(jMenuBar1);java.awt.DimensionscreenSize=java.awt.Toolkit.getDefaultToolkit().getScreenSize();setBounds((screenSize.width-800)/2,(screenSize.height-600)/2,800,600);}// </editor-fold>privatevoidAdm(java.awt.event.MouseEventevt){// TODO add your handling code here:Cadastrocad=newCadastro();cad.show();}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newTelaInicialSistema().setVisible(true);}});}// Variables declaration - do not modifyprivatejavax.swing.JMenujMenu1;privatejavax.swing.JMenujMenu2;privatejavax.swing.JMenujMenu3;privatejavax.swing.JMenujMenu4;privatejavax.swing.JMenujMenu5;privatejavax.swing.JMenuBarjMenuBar1;privatejavax.swing.JMenuItemjMenuItem1;privatejavax.swing.JMenuItemjMenuItem2;privatejavax.swing.JMenuItemjMenuItem3;privatejavax.swing.JMenuItemjMenuItem5;privatejavax.swing.JMenuItemjMenuItem6;privatejava.awt.Menumenu1;privatejava.awt.MenuBarmenuBar1;privatejava.awt.PopupMenupopupMenu1;// End of variables declaration}
existe um JFrame de nome Cadastro.java , o que eu quero é que quando ao clicar no menu Administração, ele exiba este JFrame, aparentemente, está tudo ok, mais ainda não consegui que funcionasse…