Olá bem sou iniciante e espero que eu esteja postando no lugar certo
Tenho um menu onde tenho que usar metodo inserir , remover e assim por adiante…
Usei vários exemplos, porém aparece um erro onde está citado em vermelho e eu não sei o que é e eu creio que é facil de ser resolvido. O codigo-fonte está abaixo:
menuBar=newJMenuBar();menu=newJMenu("Arquivo");menuBar.add(menu);mcInserir=newJMenuItem("Inserir");mcInserir.addActionListener(this);menu.add(mcInserir);mcRemover=newJMenuItem("Remover");mcRemover.addActionListener(this);menu.add(mcRemover);returnmenuBar;}publicvoidactionPerformed(java.awt.event.ActionEvente){if(e.getSource()==[color=red]mcInserir[/color])newInserirCliente();elseif(e.getSource()==[color=red]mcRemover[/color])newRemoveCliente();}protectedStringgetClassName(Objecto){StringclassString=o.getClass().getName();intdotIndex=classString.lastIndexOf(".");returnclassString.substring(dotIndex+1);}privatestaticvoidcreateAndShowGUI(){JFrameframe=newJFrame("MenuDemo");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);MenuDemodemo=newMenuDemo();frame.setJMenuBar(demo.createMenuBar());frame.setSize(450,260);frame.setVisible(true);}publicstaticvoidmain(String[]args){//Schedule a job for the event-dispatching thread://creating and showing this application's GUI.javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});}
}
Quem souber por favor me ajude a resolver ele, pois preciso dele para faculdade.
Obrigada pela atenção
Humm… mcInserir e mcRemover tem escopo somente dentro de createMenuBar(). Coloque como propriedades do seu MenuDemo.
T
tecnofine
Olá alexandrehdk, obrigado por responder.
Não entendi o que voce quis dizer (sou bem iniciante nessa coisas rsrs)
Poderia colocar em codigo pra mim entender melhor, por favor
Obrigado
A
alexandrehdk
packagecomponents;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importmain.InserirCliente;importmain.RemoveCliente;publicclassMenuDemoimplementsActionListener{JMenuItemmcInserir,mcRemover;publicJMenuBarcreateMenuBar(){JMenuBarmenuBar;JMenumenu;menuBar=newJMenuBar();menu=newJMenu("Arquivo");menuBar.add(menu);mcInserir=newJMenuItem("Inserir");mcInserir.addActionListener(this);menu.add(mcInserir);mcRemover=newJMenuItem("Remover");mcRemover.addActionListener(this);menu.add(mcRemover);returnmenuBar;}publicvoidactionPerformed(java.awt.event.ActionEvente){if(e.getSource()==mcInserir)newInserirCliente();elseif(e.getSource()==mcRemover)newRemoveCliente();}protectedStringgetClassName(Objecto){StringclassString=o.getClass().getName();intdotIndex=classString.lastIndexOf(".");returnclassString.substring(dotIndex+1);}privatestaticvoidcreateAndShowGUI(){JFrameframe=newJFrame("MenuDemo");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);MenuDemodemo=newMenuDemo();frame.setJMenuBar(demo.createMenuBar());frame.setSize(450,260);frame.setVisible(true);}publicstaticvoidmain(String[]args){// Schedule a job for the event-dispatching thread:// creating and showing this application's GUI.javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});}}
Só movi a declaração de mcInserir e mcRemover para fora do método createMenuBar(), deixando esses 2 objetos disponíveis para serem usados por outros métodos, como o actionPerformed().
T
tecnofine
Olá
Deu certo obrigada.
Só que agora ele não que chamar outra classe InserirCliente.java
Tentei colocar outro comando no lugar: [color=red]InserirCliente cliente[/color] = new InserirCliente(); porém o que está em vermelho dá erro.
Como poderei resolver esse problema?
Obrigada.
T
tecnofine
Olá pessoal.
Porque eu não consigo chamar outro arquivo .java como está abaixo
publicvoidactionPerformed(java.awt.event.ActionEvente){if(e.getSource()==mcInserir)newInserirCliente();//a classe que eu deveria chamar
Por favor me digam onde errei o comando.
Obrigada.
A
alexandrehdk
Olá
Você não pode usar simplesmente new InserirCliente(), pois isto é instanciar uma classe do tipo InserirCliente. Quando você colocou:
InserirClientecliente=newInserirCliente();
Então está mais correto, só que só funciona se a classe InserirCliente possuir um construtor vazio ou não ter construtores declarados.
T
tecnofine
Olá obrigada por responder
O que seriam construtores? Será que poderia ser erro da outra classe InserirCliente.java?
Veja o codigo abaixo se tiver mais algum erro pode me ajudar mais uma vez? Obs : eu uso o hibernate.
Mais uma pergunta: onde devo por esses construtores?
Obrigada
A
alexandrehdk
Meu caneco, de onde você está tirando essas classes? Parece mais que você está fazendo uma adaptação de um programa a la frankenstein.
Acho que o seu problema está no básico do básico do Java. Em todo caso, acho que alguma coisa se resolve se você trocar (na classe InserirCliente)
publicstaticvoidmain(String[]args)
por
publicstaticvoidInserir()
Faça algo semelhante na classe RemoveCliente e então substitua
Explicação (por favor, diga que entendeu): Estamos criando métodos estáticos nas classes InserirCliente e RemoveCliente, ou seja, são métodos que não dependem de você ter uma instâncias dessas classes para executar esses métodos (pelo que parece no seu código, não precisa mesmo ter instância de classe). Imagino que as coisas fluirão da mesma forma como se você estivesse executando os programas InserirCliente e RemoveCliente sem essa interface com menus.
T
tecnofine
Caro amigo, como eu disse sou iniciante portanto tenho muito pouco conhecimento…
E esse forum está me ajudando e muito, pois esse projeto é muito importante pra mim…
Quanto o seu exemplo deu certo, ele abriu o formulario InserirCliente, porém ele não grava os dados que eu coloco
Obs: Tenho o banco de dados, tabela e seus atributos criados.
Há alguma o que poderia ser para o InserirCliente não gravar os dados?
Obrigada.
T
tecnofine
Olá pessoal, mais uma vez peço ajuda de vcs. Pois com ajuda de vcs, eu consegui fazer o menu funcionar, porém quando eu clico em Inserir, ele chama os formulários, eu preencho e mando gravar e concluir sem erros só que ele não grava.
//na classe menu:if(e.getSource()==mcInserir)InserirCliente.Inserir();
//na classe Inserir:publicstaticvoidInserir()//comando que peço pra gravar na classe InserirClienteDAOcdao=newClienteDAO();cdao.gravar(cli);
Obs: sem o menu, e quando executava somente o Inserir como principal (public static void main(String[] args)) ele gravava tranquilo. Agora que foi adaptado para o funcionamento do menu e a classe Inserir ficou assim: public static void Inserir(), porém não grava mais.
Obrigada mais uma vez pela atenção de vcs.
T
tecnofine
Alguem pode me ajudar a descobrir onde estou errando? Preciso dela pra faculdade.