vc está redeclarando b dentro do código… é por isso q não funciona ele pega a instancia de b local e compara com a instacia de b atributo, por isso q não funciona.
c ao invés disso vc fizer b = new JButton(); ao invés de JBUtton b = new JButton(); vai funcionar…
C
ccxvi
Mas só q eu preciso de declarar Button b; no topo da classe por causa do escopo certo??
Daí eu fiz o q vc falou… no topo da classe eu coloquei Button b = new Button(); e ele começou a retornar esse erro qndo clico no botão!!!
java.lang.NullPointerException
at Janela$TrataBotoes.actionPerformed(Janela.java:71)
at java.awt.Button.processActionEvent(Button.java:382)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
I
itanor
Por quê você declarou os atributos b, a, te e id como atributos de instancia e dentro código você não faz referência a eles?? Não declare eles novamente dentro do código…senão quando você compara no código
if (ae.getSource()==b)
b está como null por padrão, e consequentemente o teste será falso…
fenrir
Analise a diferença entre o seu código e este, e verá o erro! :wink:
importjava.awt.*;importjava.awt.event.*;publicclassJanelaextendsFrame{Buttonb;Alunoa;TextFieldte,id;publicJanela(){a=newAluno("Maico",21);setSize(400,150);setLayout(newBorderLayout());setTitle("Teste");// TrataBotoes tb = new TrataBotoes();b=newButton();b.addActionListener(newTrataBotoes());Panelp=newPanel();p.setLayout(newFlowLayout());p.setSize(100,100);//b.setSize(60,30);//b.setLocation(10,40);b.setLabel("Exibir");p.add(b);//b1.setSize(60,30);//b1.setLocation(10,60);// b1.setLabel("Teste1");// p.add(b1);add(p,BorderLayout.SOUTH);Panelp1=newPanel();p1.setLayout(null);add(p1);Labell2=newLabel("Nome:");Labell3=newLabel("Idade:");l2.setLocation(10,20);l2.setSize(43,30);l3.setLocation(10,45);l3.setSize(43,30);p1.add(l2);p1.add(l3);te=newTextField();id=newTextField();te.setLocation(53,25);te.setSize(300,20);id.setLocation(53,50);id.setSize(300,20);p1.add(te);p1.add(id);addWindowListener(newSair());}classSairextendsWindowAdapter{publicvoidwindowClosing(WindowEvente){System.exit(0);}}classTrataBotoesimplementsActionListener{publicvoidactionPerformed(ActionEventae){if(ae.getSource()==b){te.setText(String.valueOf(a.nome));System.out.println(a.nome);}}}publicstaticvoidmain(String[]args){Janelaj=newJanela();j.setVisible(true);}}
cariocathi
“ccxvi”:
Mas só q eu preciso de declarar Button b; no topo da classe por causa do escopo certo??
Daí eu fiz o q vc falou… no topo da classe eu coloquei Button b = new Button(); e ele começou a retornar esse erro qndo clico no botão!!!
java.lang.NullPointerException
at Janela$TrataBotoes.actionPerformed(Janela.java:71)
at java.awt.Button.processActionEvent(Button.java:382)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
</blockquote>
naum era pra fazer no atributo,(topo da classe). Era so pra mudar no seu codigo, onde tinha Button b, dentro do método apenas tirar o button