Um JMenuItem ou Jmenu qualquer chama uma classe Jframe nova

7 respostas
J

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?

Obrigado.

7 Respostas

E

defina um actionListener para este menu item… Dice: para criar uma janela do tipo Sobre, utilize JDialog ao invés de JFrame

J

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

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

Depende de que tipo é o objeto Sobre, se for uma JDialog, poderias fazer assim:

sobreMenuItem.addActionListener( this );
public void actionPerformed( ActionEvent actionEvent ) {
 Object source = actionEvent.getSource();
 Sobre sobre = new Sobre();

 if ( source == sobreMenuItem )
    sobre.show();
}
E
jMenu1.addActionListener(
  new ActionListener() {
    public void actionPerformed( ActionEvent actionEvent ) {
      new Cadastro();
    }
  }
);

Algumas dicas:

  • 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:

import java.awt.event.*;
import javax.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:

public class TelaInicialSistema extends javax.swing.JFrame implements ActionListener, ItemListener {
    
    /** Creates new form TelaInicialSistema */
    public TelaInicialSistema() {
        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 ">
    private void initComponents() {
        menuBar1 = new java.awt.MenuBar();
        menu1 = new java.awt.Menu();
        popupMenu1 = new java.awt.PopupMenu();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu5 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();
        jMenu4 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenuItem6 = new javax.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(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                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.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
    }
    // </editor-fold>

    private void Adm(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
        Cadastro cad = new Cadastro();
         cad.show();
    }

    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TelaInicialSistema().setVisible(true);
                
                
                
            }
        });
    }
    
    // Variables declaration - do not modify
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private java.awt.Menu menu1;
    private java.awt.MenuBar menuBar1;
    private java.awt.PopupMenu popupMenu1;
    // 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…

Valeu!!!

Criado 6 de junho de 2005
Ultima resposta 20 de jun. de 2005
Respostas 7
Participantes 3