Quando eu clico no botao "NAO" ele nao esta chamando o metodo que eu quero
35 respostas
evertonsilvagomesjav
Bom pessoal to, seguindo as dicas eu inserir um contador pra saber se o botao "NAO" foi utilizado ou nao porem ele nao esta chamando meu metodo apos clicar no botao.
aqui esta o botao "NAO" :
privatevoidnao(java.awt.event.ActionEventevt){++contador;StringnomeAnimal=JOptionPane.showInputDialog(null,"Qual animal você pensou?");Stringqualidade=JOptionPane.showInputDialog(null,"Digite uma caracteristica do animal que voce pensou");Animalanimal=newAnimal();animal.setNome(nomeAnimal);animal.setQualidade(qualidade);Controllercontroller=newController();controller.addAnimal(animal);FramePrincipalfp=newFramePrincipal();fp.setVisible(true);this.dispose();}
Você notou a quantidade de <não> em sua pergunta? Acabei não entendendo a sua dúvida.
Poderia melhora-la ?
Tchauzin!
natureza
Ahahaha… Boaaaaa Lina !
Então tu tais fazendo este sistema para um emprego não é?
Vou analisar aqui…
É da Objective Solutions certo?
evertonsilvagomesjav
natureza kkk nao sou eu nao eu to fazendo o programa do carinha que quer o emprego, eu vi o topico dele e resolvi fazer aqui rs.
bom Lina desculpa ai kkk deixa eu ser mais claro:
Tenho um jButton que se chama “NAO” quando eu clico nesse botao eu tenho um contador onde, este contador me fala se o jButton “NAO” foi utilizado ou não. Se este jButton foi utilizado ele vai chamar um metodo pra mim, se nao foi utilizado ele nao vai chamar, porém nao esta dando certo pois o metodo nao esta sendo invocado.
lina
Oi,
Agora sim!
Então, preciso ver a criação do botão <não> e sua ação.
Se possível, postar o método que ele deveria chamar quando clicado no botão <não>.
Tchauzin!
evertonsilvagomesjav
Lina desculpa o nome do jButton é "Sim" so troquei os nomes mas o processo e o mesmo:
Vou da agora o syso, so vou postar a classe FramePerguntaTubarao pra ficar mais claro:
importjavax.swing.JOptionPane;/* * To change this template, choose Tools | Templates * and open the template in the editor. *//* * FramePerguntaSim.java * * Created on 27/10/2009, 08:59:24 *//** * * @author everton */publicclassFramePerguntaTubaraoextendsjavax.swing.JFrame{intcontador=0;publicintgetContador(){returncontador;}publicvoidsetContador(intcontador){this.contador=contador;}/** Creates new form FramePerguntaSim */publicFramePerguntaTubarao(){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. */@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code"> privatevoidinitComponents(){jPanel1=newjavax.swing.JPanel();jLabel1=newjavax.swing.JLabel();jButtonSim=newjavax.swing.JButton();jButtonNao=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jLabel1.setFont(newjava.awt.Font("Tahoma",1,14));jLabel1.setText("O animal que você pensou é um tubarão?");jButtonSim.setText("Sim");jButtonSim.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){sim(evt);}});jButtonNao.setText("Nao");jButtonNao.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){nao(evt);}});javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(54,54,54).addComponent(jLabel1).addContainerGap(61,Short.MAX_VALUE)).addGroup(jPanel1Layout.createSequentialGroup().addGap(38,38,38).addComponent(jButtonSim,javax.swing.GroupLayout.PREFERRED_SIZE,128,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,73,Short.MAX_VALUE).addComponent(jButtonNao,javax.swing.GroupLayout.PREFERRED_SIZE,128,javax.swing.GroupLayout.PREFERRED_SIZE).addGap(33,33,33)));jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(119,119,119).addComponent(jLabel1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,130,Short.MAX_VALUE).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButtonSim).addComponent(jButtonNao)).addContainerGap()));javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));pack();}// </editor-fold> privatevoidsim(java.awt.event.ActionEventevt){JOptionPane.showMessageDialog(null,"Acertei de novo!!!");FramePrincipalfp=newFramePrincipal();fp.setVisible(true);this.dispose();}privatevoidnao(java.awt.event.ActionEventevt){++contador;StringnomeAnimal=JOptionPane.showInputDialog(null,"Qual animal você pensou?");Stringqualidade=JOptionPane.showInputDialog(null,"Digite uma caracteristica do animal que voce pensou");Animalanimal=newAnimal();animal.setNome(nomeAnimal);animal.setQualidade(qualidade);Controllercontroller=newController();controller.addAnimal(animal);FramePrincipalfp=newFramePrincipal();fp.setVisible(true);this.dispose();}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newFramePerguntaTubarao().setVisible(true);}});}// Variables declaration - do not modify privatejavax.swing.JButtonjButtonNao;privatejavax.swing.JButtonjButtonSim;privatejavax.swing.JLabeljLabel1;privatejavax.swing.JPaneljPanel1;// End of variables declaration }
evertonsilvagomesjav
lina realmente meu contador nao esta incrementando mas a cada clique no jButton “Nao”, nao era pra ele incrementar ???
lina
Oi,
Então! ele realmente estará 0.
Pq??
A sua janela da classe FramePerguntaTubarao não é do tipo response. Ou seja, não é setModal(true);
Então quando você executar a linha de comando:
FramePerguntaTubaraofp=newFramePerguntaTubarao();
ele automaticamente continuará o processo fazendo a condição do IF sem mesmo você ter clicado no botão <não>.
Para corrigir isso, a sua janela deverá ser JDialog e não JFrame e em seu construtor utilizar o método setModal(true);
Tudo bem?
Tchauzin!
evertonsilvagomesjav
puts Lina pra trocar agora vou ter que fazer outra interface? nem sabia desse JDialog
esse setModal realiza o que vc pode me explicar?
brigadao!
lina
Oi,
Na realidade é só modificar o extends de sua classe FramePerguntaTubarao para JDialog no lugar de JFrame
e no construtor da classe utilizar o método setModal.
o setModal irá fazer com que o processamento fiquei para quando você executar o setVisible(true) de sua janela.
Ou seja, só fechando para continuar o restante do programa…
“modal - specifies whether dialog blocks input to other windows when shown; calling to setModal(true) is equivalent to setModalityType(Dialog.DEFAULT_MODALITY_TYPE), and calling to setModal(false) is equvivalent to setModalityType(Dialog.ModalityType.MODELESS)”
Tchauzin!
evertonsilvagomesjav
hum entendi eu fiz a mudança so que nao executa agora esta dando erro, ficou assim:
run:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE
at javax.swing.JDialog.setDefaultCloseOperation(JDialog.java:705)
at FramePerguntaTubarao.initComponents(FramePerguntaTubarao.java:52)
at FramePerguntaTubarao.<init>(FramePerguntaTubarao.java:33)
at FramePerguntaInicial.sim(FramePerguntaInicial.java:103)
at FramePerguntaInicial.access$000(FramePerguntaInicial.java:16)
at FramePerguntaInicial$1.actionPerformed(FramePerguntaInicial.java:47)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
run:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE
at javax.swing.JDialog.setDefaultCloseOperation(JDialog.java:705)
at FramePerguntaTubarao.initComponents(FramePerguntaTubarao.java:52)
at FramePerguntaTubarao.<init>(FramePerguntaTubarao.java:33)
at FramePerguntaInicial.sim(FramePerguntaInicial.java:103)
at FramePerguntaInicial.access$000(FramePerguntaInicial.java:16)
at FramePerguntaInicial$1.actionPerformed(FramePerguntaInicial.java:47)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
cara… verifica o método setDefaultCloseOperation, vc deve ter passado algum argumento que ele não reconhece como válido!
evertonsilvagomesjav
mas eu nem usei esse metodo setDefaultCloseOperation, aconteceu isso depois que eu troquei o extends da minha classe de JFrame para JDialog e setei no construtor o setModal(true).
renamed
posta seu código ai leke!
evertonsilvagomesjav
aii Renato o cod:
importjavax.swing.JOptionPane;/* * To change this template, choose Tools | Templates * and open the template in the editor. *//* * FramePerguntaSim.java * * Created on 27/10/2009, 08:59:24 *//** * * @author everton */publicclassFramePerguntaTubaraoextendsjavax.swing.JDialog{intcontador=0;publicintgetContador(){returncontador;}publicvoidsetContador(intcontador){this.contador=contador;}/** Creates new form FramePerguntaSim */publicFramePerguntaTubarao(){initComponents();setModal(true);}/** 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. */@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code"> privatevoidinitComponents(){jPanel1=newjavax.swing.JPanel();jLabel1=newjavax.swing.JLabel();jButtonSim=newjavax.swing.JButton();jButtonNao=newjavax.swing.JButton();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jLabel1.setFont(newjava.awt.Font("Tahoma",1,14));jLabel1.setText("O animal que você pensou é um tubarão?");jButtonSim.setText("Sim");jButtonSim.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){sim(evt);}});jButtonNao.setText("Nao");jButtonNao.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){nao(evt);}});javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(54,54,54).addComponent(jLabel1).addContainerGap(61,Short.MAX_VALUE)).addGroup(jPanel1Layout.createSequentialGroup().addGap(38,38,38).addComponent(jButtonSim,javax.swing.GroupLayout.PREFERRED_SIZE,128,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,73,Short.MAX_VALUE).addComponent(jButtonNao,javax.swing.GroupLayout.PREFERRED_SIZE,128,javax.swing.GroupLayout.PREFERRED_SIZE).addGap(33,33,33)));jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(119,119,119).addComponent(jLabel1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,130,Short.MAX_VALUE).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButtonSim).addComponent(jButtonNao)).addContainerGap()));javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE));pack();}// </editor-fold> privatevoidsim(java.awt.event.ActionEventevt){JOptionPane.showMessageDialog(null,"Acertei de novo!!!");FramePrincipalfp=newFramePrincipal();fp.setVisible(true);this.dispose();}privatevoidnao(java.awt.event.ActionEventevt){++contador;StringnomeAnimal=JOptionPane.showInputDialog(null,"Qual animal você pensou?");Stringqualidade=JOptionPane.showInputDialog(null,"Digite uma caracteristica do animal que voce pensou");Animalanimal=newAnimal();animal.setNome(nomeAnimal);animal.setQualidade(qualidade);Controllercontroller=newController();controller.addAnimal(animal);FramePrincipalfp=newFramePrincipal();fp.setVisible(true);this.dispose();}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newFramePerguntaTubarao().setVisible(true);}});}// Variables declaration - do not modify privatejavax.swing.JButtonjButtonNao;privatejavax.swing.JButtonjButtonSim;privatejavax.swing.JLabeljLabel1;privatejavax.swing.JPaneljPanel1;// End of variables declaration }
evertonsilvagomesjav
algupem sabe o que possa ser esse erro?
tRuNkSnEt
Cara, vc precisa aprender a olhar o que diz o seu stacktrace (pilha de erros). Veja que ele te fala ate a linha onde esta rolando o problema.
Linha 52 do metodo initComponents da classe FramePerguntaTubarao. Mais especifico impossivel!
Se voce olhar tem sim um setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
evertonsilvagomesjav
Eliezer eu olhei o metodo setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
mas o que tem ele cara, o netbeans nao deixei eu alterar nada nele
evertonsilvagomesjav
alguem?
nel
Cara, infelizmente meu calcanhar de aquiles é Swing, principalmente se fizer utilizando NetBeans (Uso Eclipse).
Mas então, como já sabe a linha que o erro ocorre, usou o componente correto no NetBeans? Você realmente precisa deste componente em seu código?
Da uma revisada com calma, as vezes na própria configuração que você selecionou na criação do componente, talvez tenha que mudar o package que ele acessa. Exemplo: o que você usa é java.swing.compenente sendo que o correto seria java.swing.pacote.componente.
Abraços.
luistiagos
evertonsilvagomesjava:
Eliezer eu olhei o metodo setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
mas o que tem ele cara, o netbeans nao deixei eu alterar nada nele
copia o codigo cola no eclipse e altera… pronto…
evertonsilvagomesjav
Luis ok mas vo alterar ele pra como? Nao sei o que fazer =/
renamed
cara, como assim o netBeans não deixa vc alterar o código? Tenta comentá-lo. Na pior das hipóteses volta para a edição da tela e procura ela propriedade defaultCloseOperation e altera a propriedade que tem lá =)
evertonsilvagomesjav
Nao deixa cara os botoes nao foram criados na mao foram criados pela paleta o erro so acontece quando eu tiro extends de JFrame e passo pra JDialog e uso setModal(true), se eu usar extends JFrame nao da erro, e eu nao sei pq.
tRuNkSnEt
Cara, eu simplismente peguei seu codigo, colei no meu eclipse comentei aquele metodo e mandei rodar. Ficou lindo
Agora eu sei que essas Ferramentas Visuais tem dessas mesmo. Então deve ter alguma coisa no Inspector falando como é a configuração de fechamento da tela igual o renamed disse.
Na verdade acho que a bagunça toda é porque você alterou o tipo da Janela na mão e acho que isso deveria ter sido feito usando as ferramentas visuais. Dai ele corrigiria as incompatibilidades que existe entre JFrame e JDialog.
Na pior da hipoteses refaça a tela. É uma tela pequena mesmo!
renamed
Eu não sou um dos melhores para dar opinião nesse assunto, porque eu uso eclipse há uns 2 ou 3 anos, então já estou muito familiarizado com a IDE. Eu já tentei usar o Netbeans diversas vezes e sempre acontece um problema “inexplicável” desses, ele não compila coisas que ele mesmo escreve.
NetBeans tem uma interface mais agradável que o eclipse, é mais fácil de se manipular quando você lida com swing, principalmente telas complexas, mas mesmo assim, eu sempre uso o eclipse.
evertonsilvagomesjav
hum vou tentar fazer isso, agora olha so to usando o Eclipse mais o visual editor.
Fiz um JDialog1 ok.
Em um outro JDialog2 eu tento chamar o JDalog1 da seguinte forma
JDialog1 jDialog1 = new JDialog1(null); // ele pede pra colocar null aqui.
jDialog1.setVisible(true);
this.dispose(); //aqui nao deixa eu dar dispose pq?
lina
Oi,
Apenas uma dica para você, pois estou vendo uma falta conhecimento em funções basicas:
Procure estudar a API.
Ler livros sobre JAVA basico.
Busque exemplos de codificação e comece a estuda-los.
Comece pelo inicio
Espero ter ajudado, ok?
Tchauzin!
evertonsilvagomesjav
puts Lina comecei a ler, mas eh pq nunca usei interface ai to me bagunçando todo, mas teria como me falar o pq de nao deixar da dispose?
C
carlaum
Ola!
Executei o seu codigo no net beans e funcionou blz!
Eu tambem mandei comentar a linha:
Vc criou pelo editor do netbeans ne? por isso vc nao vai conseguir comentar!
Mas faça o seguinte, crie outra classe com o mesmo nome dessa “FramePerguntaTubarao”, e cole o seu codigo la.
Pra voce criar esta nova classe sera necessario deletar a classe “FramePerguntaTubarao” que voce tem, por isso faça um backup antes!