Qual o problema nesse programa?

8 respostas
J

Exibir.java

import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.FlowLayout;

public class Exibir extends JFrame
{
		
		private JTextField texto;
		private JButton botao;
	
		public Exibir(){

				JFrame janela = new JFrame();
				JPanel painel = new JPanel();
			
				painel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));

				texto = new JTextField (20);
				painel.add(texto);

				botao = new JButton("Limpar");
				painel.add(botao);

				ButtonHandler event = new ButtonHandler();
				botao.addItemListener(event);
				

				janela.setSize(300,100);
				janela.setLocation(512,430);
				janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				janela.setVisible(true);

		}


		
		private class ButtonHandler implements ItemListener
		{
			
			private    String nome="";

			public void actionPerfomed (ItemEvent e){
        
				texto.setText(nome);

					
                    }

		}//End of clas.

		public static void main (String args[]){
			

                  new Exibir();
			
		}

}

O erro é :

Alguem poderia me ajudar ? Obrigado ^^ :roll:

8 Respostas

esthercamilo

Que IDE vc está usando? Eu coloquei seu código no Eclipse e ele pede para implementar o método ButtonHandler
O código ficou assim:

import javax.swing.JButton;   
import javax.swing.JTextField;   
import javax.swing.JFrame;   
import javax.swing.JPanel;   
  
import java.awt.event.ItemListener;   
import java.awt.event.ItemEvent;   
import java.awt.FlowLayout;   
  
public class Exibir extends JFrame   
{   
           
        private JTextField texto;   
        private JButton botao;   
       
        public Exibir(){   
  
                JFrame janela = new JFrame();   
                JPanel painel = new JPanel();   
               
                painel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));   
  
                texto = new JTextField (20);   
                painel.add(texto);   
  
                botao = new JButton("Limpar");   
                painel.add(botao);   
  
                ButtonHandler event = new ButtonHandler();   
                botao.addItemListener(event);   
                   
  
                janela.setSize(300,100);   
                janela.setLocation(512,430);   
                janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
                janela.setVisible(true);   
  
        }   
  
  
           
        private class ButtonHandler implements ItemListener   
        {   
               
            private    String nome="";   
  
            public void actionPerfomed (ItemEvent e){   
           
                texto.setText(nome);   
  
                       
                    }

			public void itemStateChanged(ItemEvent e) {
				// TODO Auto-generated method stub
				
			}   
  
        }//End of clas.   
  
        public static void main (String args[]){   
               
  
                  new Exibir();   
               
        }   
  
}
ViniGodoy

O problema é o que ele lhe diz. A interface ItemListener possui um método chamado itemStateChanged, não um método chamado actionPerformed.

Quem tem o actionPerformed é o ActionListener, que você registra usando o método addActionListener do botão. É a opção mais comum em JButtons.

J

Por exemplo, o ItemListener/ItemEvent serve para JCheckBoxes , JRadioButtons e JComboBox, né ?

Então, eu adaptei meu código usando o ActionListener , só que dá o mesmo erro.

Não consigo entender :frowning:

import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.FlowLayout;

public class Exibir extends JFrame
{
		
		private JTextField texto;
		private JButton botao;
	
		public Exibir(){

				JFrame janela = new JFrame();
				JPanel painel = new JPanel();
			
				painel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));

				texto = new JTextField (20);
				painel.add(texto);

				botao = new JButton("Limpar");
				painel.add(botao);

				ButtonHandler event = new ButtonHandler();
				botao.addActionListener(event);
				

				janela.setSize(300,100);
				janela.setLocation(512,430);
				janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				janela.setVisible(true);

		}


		
		private class ButtonHandler implements ActionListener
		{
			
			private    String nome="";

			public void actionPerfomed (ActionEvent e){
        
				texto.setText(nome);

					
                    }

		}//End of clas.

		public static void main (String args[]){
			

                  new Exibir();
			
		}

}

Eu to usando o EditPlus ._.

E

Você comeu a letra “r” - o nome é “actionPerformed”. Está com fome? Coma um lanchinho…

E

Eu já tive muitos problemas com esse tipo de coisas (comer letras ou trocar letras).
Conselho: use uma IDE como o Eclipse ou NetBeans.
Volta e meia eu posto uns exemplos aqui que não conseguiria fazer rapidamente sem o Eclipse.

J

Omg :S

Então esses metodos sempre serao escritos assim qunado eu for usar um evento ?

Obrigado a todos pelas respostas ^^

marcelo.bellissimo

java13081995:
Omg :S

Então esses metodos sempre serao escritos assim qunado eu for usar um evento ?

Obrigado a todos pelas respostas ^^

Sim, devido ao uso das interfaces… quando você faz uso do implements, está fazendo uso de uma interface, e uma das características delas é a obrigatoriedade de certos métodos… cada uma “obriga” um ou mais métodos, acho que seria o caso de estudar mais á fundo como as interfaces funcionam, qual o propósito delas…

Rummenigge
Já que sua classe extende JFrame, não precisa criar outra janela dentro dela.
1. import javax.swing.JButton;  
   2. import javax.swing.JTextField;  
   3. import javax.swing.JFrame;  
   4. import javax.swing.JPanel;  
   5.   
   6. import java.awt.event.ItemListener;  
   7. import java.awt.event.ItemEvent;  
   8. import java.awt.FlowLayout;  
   9.   
  10. public class Exibir extends JFrame  
  11. {  
  12.           
  13.         private JTextField texto;  
  14.         private JButton botao;  
  15.       
  16.         public Exibir(){  
  17.   
  19.                 JPanel painel = new JPanel();  
  20.               
  21.                 painel.setLayout(new FlowLayout(FlowLayout.CENTER,10,10));  
  22.   
  23.                 texto = new JTextField (20);  
  24.                 painel.add(texto);  
  25.   
  26.                 botao = new JButton("Limpar");  
  27.                 painel.add(botao);  
  28.   
  29.                 ButtonHandler event = new ButtonHandler();  
  30.                 botao.addItemListener(event);  
  31.                   
  32.                 getContentPane().add(painel, BorderLayout.CENTER);
  
  33.                 setSize(300,100);  
  34.                 setLocation(512,430);  
  35.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  36.                 setVisible(true);  
  37.   
  38.         }  
  39.   
  40.   
  41.           
  42.         /*private class ButtonHandler implements ItemListener  
  43.         {  
  44.               
  45.             private    String nome="";  
  46.   
  47.             public void actionPerfomed (ItemEvent e){  
  48.           
  49.                 texto.setText(nome);  
  50.   
  51.                       
  52.                     }  
  53.   
  54.         }//End of clas.  */ NADA A VER.
  55.   
  56.         public static void main (String args[]){  
  57.               
  58.   
  59.                   new Exibir();  
  60.               
  61.         }  
  62.   
  63. }

Na questão da Interface ItemListener, faça o que o pessoal falou acima.

Criado 21 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 8
Participantes 6