Socorro aprendendo java + swing

13 respostas
Elizeu_Santos

galera, boa tarde. sou iniciante em java e estou aprendnendo a inserir eventos. criei o seguinte código:

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

import javax.swing.*;

public class IServidor extends JFrame implements ActionListener{
	
	JButton btConectar = new JButton("Conectar");

	public IServidor() {
		// Definir as dimensões.
		setSize(440, 290);

		// Definir a localização.
		setLocation(5, 5);

		// Definir o titulo da janela(Frame).
		setTitle("::: Informações sobre o servidor :::");

		// Definir redimensionamento (false)
		setResizable(false);

		// Definir método close.
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Definir como "visivel".
		setVisible(true);
		
		// Definir layout(null)
		getContentPane().setLayout(null);
		
		//Adcionar componentes
		getContentPane().add(btConectar);
		
		//Posicionar componentes
		btConectar.setBounds(5, 5, 95, 25);

	}
	
	public void eventos(ActionEvent e){
		btConectar.addActionListener(this);
		if (e.getSource() == btConectar){
			JOptionPane.showMessageDialog(null, "funcionou");
		}
	}

}

ele n compila por nada, se eu ignorar ele copila + n executa o evento. alguem pod me dizer o pq? o eclipse me da um aviso e um erro.

erro:
The type IServidor must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)

aviso:
The serializable class IServidor does not declare a static final serialVersionUID field of type long

desde ja agradeço aos esforços.

13 Respostas

jingle

você ta implementando ActionListeners portanto deve escrever seus metodos.

dessa forma:

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

import javax.swing.*;

public class IServidor extends JFrame implements ActionListener{
	
	JButton btConectar = new JButton("Conectar");

	public IServidor() {
		// Definir as dimensões.
		setSize(440, 290);

		// Definir a localização.
		setLocation(5, 5);

		// Definir o titulo da janela(Frame).
		setTitle("::: Informações sobre o servidor :::");

		// Definir redimensionamento (false)
		setResizable(false);

		// Definir método close.
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Definir como "visivel".
		setVisible(true);
		
		// Definir layout(null)
		getContentPane().setLayout(null);
		
		//Adcionar componentes
		getContentPane().add(btConectar);
		
		//Posicionar componentes
		btConectar.setBounds(5, 5, 95, 25);

	}
	
	public void eventos(ActionEvent e){
		btConectar.addActionListener(this);
		if (e.getSource() == btConectar){
			JOptionPane.showMessageDialog(null, "funcionou");
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// Faça seu código de actionperformed aqui
		
	}

}
fdettoni

Se você está usando eclipse é só clicar em cima do erro, e ele te dá a opção de criar os métodos automaticamente pra você.

Elizeu_Santos

obrigado, vou testar aki. vlw galera

Elizeu_Santos

n to sabendo fazer galera, n sei o q por dentro do actionPerfirmeda. sei q é uma encheção de saco duvida d iniciante… + alguem poderia ajudar?

jingle

é o que você deseja que ele execute após precionar o seu botão no seu caso pelo que pude ver seria isso.

JOptionPane.showMessageDialog(null, "funcionou");

que por sinal esta no lugar errado.

@Override
	public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "funcionou");  
		
	}
Elizeu_Santos

ja mudei o código efetivo quase td. to caçando no google só q é + facil encontrar tutorial de fortran do q explicações pra minha duvida ¬¬. olha como ta o codigo:

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

import javax.swing.*;

@SuppressWarnings("serial")
public class IServidor extends JFrame implements ActionListener {

	JButton btConectar = new JButton("Conectar");

	public IServidor() {
		// Definir as dimensões.
		setSize(440, 290);

		// Definir a localização.
		setLocation(5, 5);

		// Definir o titulo da janela(Frame).
		setTitle("::: Informações sobre o servidor :::");

		// Definir redimensionamento (false)
		setResizable(false);

		// Definir método close.
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Definir como "visivel".
		setVisible(true);

		// Definir layout(null)
		getContentPane().setLayout(null);

		// Adcionar componentes
		getContentPane().add(btConectar);

		// Posicionar componentes
		btConectar.setBounds(5, 5, 95, 25);

	}

	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == btConectar) {
			JOptionPane.showMessageDialog(null, "funcionou");
		}
	}

}
jingle

como vi que você tava com dificuldades tomei a liberdade de alterar um pouco sua logica pra ficar mais simples.

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class IServidor extends JFrame {

	JButton btConectar = new JButton("Conectar");

	public IServidor() {
		// Definir as dimensões.
		setSize(440, 290);

		// Definir a localização.
		setLocation(5, 5);

		// Definir o titulo da janela(Frame).
		setTitle("::: Informações sobre o servidor :::");

		// Definir redimensionamento (false)
		setResizable(false);

		// Definir método close.
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Definir como "visivel".
		setVisible(true);

		// Definir layout(null)
		getContentPane().setLayout(null);

		// Adcionar componentes
		getContentPane().add(btConectar);

		// Posicionar componentes
		btConectar.setBounds(5, 5, 95, 25);

		// adicionando um actionlistener para quando clicar no botão chamar o metodo acaoBotao
		btConectar.addActionListener(new ActionListener() { // criando novo actionListener
					@Override
					public void actionPerformed(ActionEvent e) {// sobrescrevendo o actionperformed padrão para poder chamar o acaobotao
						acaoBotao();

					}
				});

	}
	
	//Ação que vai ser executada ao precionar o botao.
	public void acaoBotao() {
		JOptionPane.showMessageDialog(null, "Agora sim funcionou");
	}

}
Elizeu_Santos

aeeee funcionou ^^. n entendi muito bem + agora é só questão d tempo. brigado mano.

Fernando_Generoso_da
jingle:
como vi que você tava com dificuldades tomei a liberdade de alterar um pouco sua logica pra ficar mais simples.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class IServidor extends JFrame {

	JButton btConectar = new JButton("Conectar");

	public IServidor() {
		// Definir as dimensões.
		setSize(440, 290);

		// Definir a localização.
		setLocation(5, 5);

		// Definir o titulo da janela(Frame).
		setTitle("::: Informações sobre o servidor :::");

		// Definir redimensionamento (false)
		setResizable(false);

		// Definir método close.
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		// Definir como "visivel".
		setVisible(true);

		// Definir layout(null)
		getContentPane().setLayout(null);

		// Adcionar componentes
		getContentPane().add(btConectar);

		// Posicionar componentes
		btConectar.setBounds(5, 5, 95, 25);

		// adicionando um actionlistener para quando clicar no botão chamar o metodo acaoBotao
		btConectar.addActionListener(new ActionListener() { // criando novo actionListener
					@Override
					public void actionPerformed(ActionEvent e) {// sobrescrevendo o actionperformed padrão para poder chamar o acaobotao
						acaoBotao();

					}
				});

	}
	
	//Ação que vai ser executada ao precionar o botao.
	public void acaoBotao() {
		JOptionPane.showMessageDialog(null, "Agora sim funcionou");
	}

}

jingle, vamos com calma...Assim ele não vai entender o pq o código dele não funcionou.

Elizeu_Santos,

Quando voce quer que um componente dispare uma ação, tu tem que registrar esse componente em algum Listener. Ao iimplementar um ActionListener na classe, não está dizendo que TODOS os componetnes da tua classe dispararão o evento implementado. O que falto é tu registrar o teu botão no evento ActionListener, assim:

btConectar.addActionListener(this)

Dessa forma, tu está registrando o botão em uma classe ActionListener, que no caso é a tua própria classe. Isso é possível porque tu implementou a interface ActionListener.

Fernando

Elizeu_Santos

blz fernando, e desse modo q vc fez, e q eu estava fazendo… como coloco o evento? fiz um novo form pra n imbolar com o código do nosso amigo q tambem ajudou bastante e eu agradeço. o codigo atual ta da seguinte forma:

import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JButton;

public class Formulario2 extends JFrame implements ActionListener{
	JButton botao;

	public Formulario2() {
		// Dimensões
		setSize(240, 290);
		// Localização
		setLocation(5, 5);
		// Titulo
		setTitle("::: Aprendi :::");
		// Close
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		// visivel
		setVisible(true);

		botao = new JButton("Clique");
		botao.setBounds(70, 70, 70, 20);

		getContentPane().setLayout(null);
		getContentPane().add(botao);
		
		botao.addActionListener(this);
		

	}

}

oq falta pra eu poder colocar o evento do botao?

Fernando_Generoso_da

falta o método que tu deve implementar do ActionListener, como tu fez no primeiro código…

import java.awt.event.ActionListener;  
     
   import javax.swing.JFrame;  
   import javax.swing.JButton;  
     
   public class Formulario2 extends JFrame implements ActionListener{  
       JButton botao;  
     
       public Formulario2() {  
           // Dimensões  
           setSize(240, 290);  
           // Localização  
           setLocation(5, 5);  
           // Titulo  
           setTitle("::: Aprendi :::");  
           // Close  
           setDefaultCloseOperation(EXIT_ON_CLOSE);  
           // visivel  
           setVisible(true);  
     
           botao = new JButton("Clique");  
           botao.setBounds(70, 70, 70, 20);  
     
           getContentPane().setLayout(null);  
           getContentPane().add(botao);  
             
           botao.addActionListener(this);  
             
     
       }  

         public void actionPerformed(ActionEvent e) {  
   
             if (e.getSource() == botao) {  
                 JOptionPane.showMessageDialog(null, "funcionou");  
             }  
         }
     }
jingle

Faltou voce escrever o metodo actionPerformed que resumindo é o que o Java vai chamar ao ser precionado o teu botão.

quando você faz

botao.addActionListener(this);

você diz pro java que a classe this (Formulario2) vai ser responsavel por tratar a ação do clique, e o java usa o método actionPerformed da classe definida, como você não escreveu esse método da erro. (seria ± isso tentando simplificar bastante)

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

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class Formulario2 extends JFrame implements ActionListener{
	JButton botao;

	public Formulario2() {
		// Dimensões
		setSize(240, 290);
		// Localização
		setLocation(5, 5);
		// Titulo
		setTitle("::: Aprendi :::");
		// Close
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		// visivel
		setVisible(true);

		botao = new JButton("Clique");
		botao.setBounds(70, 70, 70, 20);

		getContentPane().setLayout(null);
		getContentPane().add(botao);
		
		botao.addActionListener(this);
		

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		JOptionPane.showMessageDialog(null , "funcinou");
		
	}

}
Elizeu_Santos

pow… pow.

FUNCIONOUUUUUUUUUUUUUUUUU UHUUUUUUUUUUUUUUUUUUL BRIGADUUUUUUUUU ^^

super feliz, n sei nem como agradecer entaum vou agradecer igual akeles velhinhos q agente ajuda a atravessar a rua

" o meu filho muito obrigado meu filho q jesus continue te abençoando meu filho muito obrigado… oh jesus abençoa ele… oh meu fio…"

rsrsrs vlw ^^

Criado 26 de agosto de 2009
Ultima resposta 26 de ago. de 2009
Respostas 13
Participantes 4