[Resolvido] JMenuItem não quer abrir o JFrame, qual será o problema?
8 respostas
alexandref93
Painel principal:
importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){JMenuBarbarra=newjavax.swing.JMenuBar();JMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");barra.add(manutencaoMenu);JMenuItemcadastroclienteMenu=newjavax.swing.JMenuItem("Cadastro de cliente");manutencaoMenu.add(cadastroclienteMenu);setJMenuBar(barra);JDesktopPanelc=newjavax.swing.JDesktopPane();add(lc);}@SuppressWarnings("unused")privatevoidcadastroclienteMenuActionPerformed(java.awt.event.ActionEventevt){newCadastroClienteFrame().setVisible(true);}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}}
JFrame secundário:
@SuppressWarnings("serial")publicclassCadastroClienteFrameextendsjavax.swing.JFrame{publicCadastroClienteFrame(){initComponents();setLocationRelativeTo(null);setResizable(false);setSize(500,500);setVisible(true);setTitle("Cadastro de cliente");setDefaultCloseOperation(EXIT_ON_CLOSE);}privatevoidinitComponents(){}publicstaticvoidCadastroFrame(){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newCadastroClienteFrame().setVisible(true);}});}}
bem to tentando abrir o JFrame secundário, mais não vai, jah add o ActionEvent e tudo, mais nada acontece, qual será o possivel problema???
faltou você adicionar um ActionLister no seu objeto JMenuItem cadastroclienteMenu.
segue um exemplo.
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{privateclassMyEventListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEventevt){if(evt.getSource()==cadastroclienteMenu)newCadastroClienteFrame();}}privateJDesktopPanelc=newJDesktopPane();privateJMenuBarbarra=newjavax.swing.JMenuBar();privateJMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");privateJMenuItemcadastroclienteMenu=newJMenuItem("Cadastro de cliente");privateMyEventListenerevtListener=newMyEventListener();publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(400,400);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){getCadastroclienteMenu().addActionListener(evtListener);getBarra().add(manutencaoMenu);getManutencaoMenu().add(cadastroclienteMenu);this.setJMenuBar(barra);this.add(lc);}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}publicJDesktopPanegetLc(){returnlc;}publicvoidsetLc(JDesktopPanelc){this.lc=lc;}publicJMenuBargetBarra(){returnbarra;}publicvoidsetBarra(JMenuBarbarra){this.barra=barra;}publicJMenugetManutencaoMenu(){returnmanutencaoMenu;}publicvoidsetManutencaoMenu(JMenumanutencaoMenu){this.manutencaoMenu=manutencaoMenu;}publicJMenuItemgetCadastroclienteMenu(){returncadastroclienteMenu;}publicvoidsetCadastroclienteMenu(JMenuItemcadastroclienteMenu){this.cadastroclienteMenu=cadastroclienteMenu;}}
alexandref93
maiconhc:
faltou você adicionar um ActionLister no seu objeto JMenuItem cadastroclienteMenu.
segue um exemplo.
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{privateclassMyEventListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEventevt){if(evt.getSource()==cadastroclienteMenu)newCadastroClienteFrame();}}privateJDesktopPanelc=newJDesktopPane();privateJMenuBarbarra=newjavax.swing.JMenuBar();privateJMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");privateJMenuItemcadastroclienteMenu=newJMenuItem("Cadastro de cliente");privateMyEventListenerevtListener=newMyEventListener();publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(400,400);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){getCadastroclienteMenu().addActionListener(evtListener);getBarra().add(manutencaoMenu);getManutencaoMenu().add(cadastroclienteMenu);this.setJMenuBar(barra);this.add(lc);}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}publicJDesktopPanegetLc(){returnlc;}publicvoidsetLc(JDesktopPanelc){this.lc=lc;}publicJMenuBargetBarra(){returnbarra;}publicvoidsetBarra(JMenuBarbarra){this.barra=barra;}publicJMenugetManutencaoMenu(){returnmanutencaoMenu;}publicvoidsetManutencaoMenu(JMenumanutencaoMenu){this.manutencaoMenu=manutencaoMenu;}publicJMenuItemgetCadastroclienteMenu(){returncadastroclienteMenu;}publicvoidsetCadastroclienteMenu(JMenuItemcadastroclienteMenu){this.cadastroclienteMenu=cadastroclienteMenu;}}
o que seria realmente esse MyEventListener???
ViniGodoy
É a classe que vai “escutar” que seu evento foi clicado. Você também poderia declara-lo de forma anônima:
getCadastroclienteMenu().addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
new CadastroClienteFrame().setVisible(true);
}
}
);
alexandref93
É a classe que vai “escutar” que seu evento foi clicado. Você também poderia declara-lo de forma anônima:
getCadastroclienteMenu().addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent evt) {
new CadastroClienteFrame().setVisible(true);
}
}
);
aqui tah dando erro, implemento no método do initComponents ou errei tudo???
ViniGodoy
… que erro?
alexandref93
… que erro?
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{privateJMenuBarbarra=newjavax.swing.JMenuBar();privateJMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");privateJMenuItemCadastroclienteMenu=newjavax.swing.JMenuItem("Cadastro de cliente");privateJDesktopPanelc=newjavax.swing.JDesktopPane();publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){barra.add(manutencaoMenu);manutencaoMenu.add(CadastroclienteMenu);setJMenuBar(barra);add(lc);}@SuppressWarnings("unused")privatevoidCadastroclienteMenu(){getCadastroclienteMenu().addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){newCadastroClienteFrame().setVisible(true);}});}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}}
está acusando de erro no “getCadastroclienteMenu”, o que falta???
ViniGodoy
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{privateJMenuBarbarra=newjavax.swing.JMenuBar();privateJMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");privateJMenuItemcadastroClienteMenu=newjavax.swing.JMenuItem("Cadastro de cliente");privateJDesktopPanelc=newjavax.swing.JDesktopPane();publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){barra.add(manutencaoMenu);manutencaoMenu.add(cadastroClienteMenu);cadastroClienteMenu.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){newCadastroClienteFrame().setVisible(true);}});setJMenuBar(barra);add(lc);}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}}
alexandref93
ViniGodoy:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;@SuppressWarnings("serial")publicclassPainelFrameextendsjavax.swing.JFrame{privateJMenuBarbarra=newjavax.swing.JMenuBar();privateJMenumanutencaoMenu=newjavax.swing.JMenu("Manutenção");privateJMenuItemcadastroClienteMenu=newjavax.swing.JMenuItem("Cadastro de cliente");privateJDesktopPanelc=newjavax.swing.JDesktopPane();publicPainelFrame(){initComponents();setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setTitle("Fox Home Vídeo");}privatevoidinitComponents(){barra.add(manutencaoMenu);manutencaoMenu.add(cadastroClienteMenu);cadastroClienteMenu.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevt){newCadastroClienteFrame().setVisible(true);}});setJMenuBar(barra);add(lc);}publicstaticvoidmain(String[]args){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newPainelFrame().setVisible(true);}});}}