galera, boa tarde. sou iniciante em java e estou aprendnendo a inserir eventos. criei o seguinte código:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;publicclassIServidorextendsJFrameimplementsActionListener{JButtonbtConectar=newJButton("Conectar");publicIServidor(){// 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 componentesgetContentPane().add(btConectar);//Posicionar componentesbtConectar.setBounds(5,5,95,25);}publicvoideventos(ActionEvente){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
você ta implementando ActionListeners portanto deve escrever seus metodos.
dessa forma:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;publicclassIServidorextendsJFrameimplementsActionListener{JButtonbtConectar=newJButton("Conectar");publicIServidor(){// 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 componentesgetContentPane().add(btConectar);//Posicionar componentesbtConectar.setBounds(5,5,95,25);}publicvoideventos(ActionEvente){btConectar.addActionListener(this);if(e.getSource()==btConectar){JOptionPane.showMessageDialog(null,"funcionou");}}@OverridepublicvoidactionPerformed(ActionEvente){// 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.
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:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.*;@SuppressWarnings("serial")publicclassIServidorextendsJFrameimplementsActionListener{JButtonbtConectar=newJButton("Conectar");publicIServidor(){// 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 componentesgetContentPane().add(btConectar);// Posicionar componentesbtConectar.setBounds(5,5,95,25);}publicvoidactionPerformed(ActionEvente){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.
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;publicclassIServidorextendsJFrame{JButtonbtConectar=newJButton("Conectar");publicIServidor(){// 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 componentesgetContentPane().add(btConectar);// Posicionar componentesbtConectar.setBounds(5,5,95,25);// adicionando um actionlistener para quando clicar no botão chamar o metodo acaoBotaobtConectar.addActionListener(newActionListener(){// criando novo actionListener@OverridepublicvoidactionPerformed(ActionEvente){// sobrescrevendo o actionperformed padrão para poder chamar o acaobotaoacaoBotao();}});}//Ação que vai ser executada ao precionar o botao.publicvoidacaoBotao(){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.
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;publicclassIServidorextendsJFrame{JButtonbtConectar=newJButton("Conectar");publicIServidor(){// 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 componentesgetContentPane().add(btConectar);// Posicionar componentesbtConectar.setBounds(5,5,95,25);// adicionando um actionlistener para quando clicar no botão chamar o metodo acaoBotaobtConectar.addActionListener(newActionListener(){// criando novo actionListener@OverridepublicvoidactionPerformed(ActionEvente){// sobrescrevendo o actionperformed padrão para poder chamar o acaobotaoacaoBotao();}});}//Ação que vai ser executada ao precionar o botao.publicvoidacaoBotao(){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:
falta o método que tu deve implementar do ActionListener, como tu fez no primeiro código…
importjava.awt.event.ActionListener;importjavax.swing.JFrame;importjavax.swing.JButton;publicclassFormulario2extendsJFrameimplementsActionListener{JButtonbotao;publicFormulario2(){// Dimensões setSize(240,290);// Localização setLocation(5,5);// Titulo setTitle("::: Aprendi :::");// Close setDefaultCloseOperation(EXIT_ON_CLOSE);// visivel setVisible(true);botao=newJButton("Clique");botao.setBounds(70,70,70,20);getContentPane().setLayout(null);getContentPane().add(botao);botao.addActionListener(this);}publicvoidactionPerformed(ActionEvente){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)