Preciso de uma ajuda nesse código, quando executo, parasse que os componentes de menu não inicializam, alguém pode me dizer em que errei?
quando executo, apenas aparece a janela e um pequeno Menu na parte superior, mais bem fino sem nada escrito.
@SuppressWarnings("serial")publicclassMenuextendsJFrameimplementsActionListener{JMenuBarbarra;JMenuarquivo,cadastro;JMenuItemsair,sobre,funcionario,cliente,carro,locacao;ImageIconicone,bgImagen;publicMenu(){//instaciando items de menusair=newJMenuItem("Sair",KeyEvent.VK_R);sobre=newJMenuItem("Sobre",KeyEvent.VK_S);funcionario=newJMenuItem("funcionário");cliente=newJMenuItem("cliente");carro=newJMenuItem("carro");locacao=newJMenuItem("Locação");arquivo=newJMenu();arquivo.setMnemonic(KeyEvent.VK_A);arquivo.add(sair);arquivo.add(sobre);cadastro=newJMenu();cadastro.setMnemonic(KeyEvent.VK_C);cadastro.add(funcionario);cadastro.add(cliente);cadastro.add(carro);cadastro.add(locacao);barra=newJMenuBar();barra.setFont(newFont("arial",Font.PLAIN,26));barra.add(arquivo);barra.add(cadastro);icone=newImageIcon("icone.png");this.setIconImage(icone.getImage());bgImagen=newImageIcon("img2.jpg");JLabelbg=newJLabel(bgImagen,SwingConstants.CENTER);this.setJMenuBar(barra);this.getContentPane().add(bg);setTitle("Menu");setSize(getToolkit().getScreenSize());setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
O problema pode estar na linha 52, tente usar uma dimensão préestabelecida menor. Se isso não funcionar, nos mostre o código do main da sua aplicação.
ZeTripe
Eu fiz a troca com por uma dimensão 300,300;
mais continuou o mesmo problema com uma janela menor.
os botões do menu na parte superior da janela não aparecem, apenas parece a barra, bem fina mesmo.
Não tem erro nenhum no seu programa. A barra fica pequena porque você não deu nenhum nome nos menus.
Veja:
importjava.awt.Color;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;importjavax.swing.ImageIcon;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.SwingConstants;@SuppressWarnings("serial")publicclassMenuextendsJFrameimplementsActionListener{JMenuBarbarra;JMenuarquivo,cadastro;JMenuItemsair,sobre,funcionario,cliente,carro,locacao;ImageIconicone,bgImagen;publicMenu(){//instaciando items de menusair=newJMenuItem("Sair",KeyEvent.VK_R);sobre=newJMenuItem("Sobre",KeyEvent.VK_S);funcionario=newJMenuItem("funcionário");cliente=newJMenuItem("cliente");carro=newJMenuItem("carro");locacao=newJMenuItem("Locação");arquivo=newJMenu("Arquivo");arquivo.setMnemonic(KeyEvent.VK_A);arquivo.add(sair);arquivo.add(sobre);cadastro=newJMenu("Cadastros");cadastro.setMnemonic(KeyEvent.VK_C);cadastro.add(funcionario);cadastro.add(cliente);cadastro.add(carro);cadastro.add(locacao);barra=newJMenuBar("Telas");barra.setFont(newFont("arial",Font.PLAIN,26));barra.add(arquivo);barra.add(cadastro);icone=newImageIcon("icone.png");this.setIconImage(icone.getImage());bgImagen=newImageIcon("img2.jpg");JLabelbg=newJLabel(bgImagen,SwingConstants.CENTER);this.setJMenuBar(barra);this.getContentPane().add(bg);setTitle("Menu");setSize(getToolkit().getScreenSize());setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getContentPane().setBackground(Color.RED);}/** * @param args */publicstaticvoidmain(String[]args){Menux=newMenu();x.setVisible(true);}@OverridepublicvoidactionPerformed(ActionEvente){}}
ZeTripe
Obrigado mesmo, ajudou muito
estou desenvolvendo o meu TCC do curso técnico e esse menu é essencial, o ruim é que temos meio que ser autodidata, pois não aprendemos a maioria das coisas que pretendemos fazer.
Obrigado pela ajuda, abraços.
E
entanglement
A palavra é “autodidata”
Para não ficar perdendo tempo desenhando telas, tente usar o Eclipse com o plugin WindowBuilder, e de preferência usando o layout manager “MigLayout”.
Vocês vão ver que essa parte chata de ficar desenhando telas na mão é coisa do passado.
E
entanglement
Um exemplo da sua tela redesenhada com o WindowBuilder (não adicionei a parte de maximizar automaticamente a tela, que vocês puseram).
Ele gera mais código que escrever manualmente, mas fica bem mais organizado.
Por exemplo, toda a parte de configurar um determinado elemento da tela fica dentro de um único método, o que facilita quando você precisa modificar esse elemento da tela.
packageguj;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.border.EmptyBorder;importjavax.swing.JMenuBar;importjavax.swing.JMenu;importjavax.swing.JMenuItem;importjavax.swing.JOptionPane;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;publicclassAplicacaoFrameextendsJFrame{privateJPanelcontentPane;privateJMenuBarmnbPrincipal;privateJMenumnArquivo;privateJMenumnCadastros;privateJMenuItemmntmSair;privateJMenuItemmntmSobre;privateJMenuItemmntmFuncionarios;privateJMenuItemmntmClientes;privateJMenuItemmntmCarros;privateJMenuItemmntmLocacoes;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{AplicacaoFrameframe=newAplicacaoFrame();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicAplicacaoFrame(){setTitle("Cadastro");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,450,300);setJMenuBar(getMnbPrincipal());contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));contentPane.setLayout(newBorderLayout(0,0));setContentPane(contentPane);}privateJMenuBargetMnbPrincipal(){if(mnbPrincipal==null){mnbPrincipal=newJMenuBar();mnbPrincipal.add(getMnArquivo());mnbPrincipal.add(getMnCadastros());}returnmnbPrincipal;}privateJMenugetMnArquivo(){if(mnArquivo==null){mnArquivo=newJMenu("Arquivo");mnArquivo.setMnemonic('A');mnArquivo.add(getMntmSair());mnArquivo.add(getMntmSobre());}returnmnArquivo;}privateJMenugetMnCadastros(){if(mnCadastros==null){mnCadastros=newJMenu("Cadastros");mnCadastros.setMnemonic('C');mnCadastros.add(getMntmFuncionarios());mnCadastros.add(getMntmClientes());mnCadastros.add(getMntmCarros());mnCadastros.add(getMntmLocacoes());}returnmnCadastros;}privateJMenuItemgetMntmSair(){if(mntmSair==null){mntmSair=newJMenuItem("Sair");mntmSair.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){intresposta=JOptionPane.showConfirmDialog(AplicacaoFrame.this,"Deseja sair da aplicação ?");if(resposta==JOptionPane.YES_OPTION){AplicacaoFrame.this.dispose();}}});mntmSair.setMnemonic('S');}returnmntmSair;}privateJMenuItemgetMntmSobre(){if(mntmSobre==null){mntmSobre=newJMenuItem("Sobre...");mntmSobre.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JOptionPane.showMessageDialog(AplicacaoFrame.this,"<html>Trabalho de Conclusão de Curso - 2012<br/>"+"Sistemas de Informação - Universidade de Pararakelse<br/>"+"<table>"+"<tr><td>Programador:</td><td>Keitaro Urashima</td></tr>"+"<tr><td>Pesquisador:</td><td>Naru Narusegawa</td></tr>"+"<tr><td>Designer:</td><td>Noriyasu Seta</td></tr>"+"</table>"+"</html>");}});mntmSobre.setMnemonic('b');}returnmntmSobre;}privateJMenuItemgetMntmFuncionarios(){if(mntmFuncionarios==null){mntmFuncionarios=newJMenuItem("Funcionários");mntmFuncionarios.setMnemonic('F');}returnmntmFuncionarios;}privateJMenuItemgetMntmClientes(){if(mntmClientes==null){mntmClientes=newJMenuItem("Clientes");mntmClientes.setMnemonic('C');}returnmntmClientes;}privateJMenuItemgetMntmCarros(){if(mntmCarros==null){mntmCarros=newJMenuItem("Carros");mntmCarros.setMnemonic('A');}returnmntmCarros;}privateJMenuItemgetMntmLocacoes(){if(mntmLocacoes==null){mntmLocacoes=newJMenuItem("Locações");mntmLocacoes.setMnemonic('L');}returnmntmLocacoes;}}
ZeTripe
Eu já usava esse plugin, eu só gosto de ter uma noção dos códigos antes de usar um recurso de arrastar.
Mais mesmo assim obrigado pela ajuda, agora preciso procurar sobre, trabalhar com imagens como plano de fundo, se tiver algo que possa me mandar Obg.