Olá pessoal, sei Java faz um tempinho e agora estou me aventurando no mundo do Swing. Estou gostando muito mas estou com 2 probleminhas, um eu estou com dificuldades de entender e o outro de aplicar.
1º
Gostaria de saber por que esse código abaixo funciona (ou seja, ele fecha a janela ao clicar no botão)…
final JFrame janela = new JFrame ("Janela Simples");
janela.setSize(300,100);
JButton botao = new JButton("botao");
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}});
… e esse abaixo não funciona?
class MeuListener extends WindowAdapter {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
}
final JFrame janela = new JFrame ("Janela Simples");
janela.setSize(300,100);
JButton botao = new JButton("botao");
botao.addActionListener(new MeuListener());
Me desculpe se estou falando besteira, mas pra mim, o código é o mesmo, só mudou o jeito de chamar o System.exit . Pelo tutorial que estou seguindo, diz que os dois funcionam, só que na prática isso não acontece.
2º
Agora é um problema que no meu tuto não mostra. Eu preciso fazer o seguinte: Quando o usuário clicar no JButton, o conteúdo que tiver escrito dentro da caixa do JTextField seja salvo em uma String. Isso é possível? Se não for pedir muito, será que poderiam dar um exemplo usando dois JTextField e um só JButton (usando 2 Strings)?
VLW pessoal
E so uusar o metodo getSelectedText da classe TextField , ele pega o texto q vc selecionou com o mouse , fiz o codigo
package testeguj;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
*
* @author Jorge
*/
public class Exemplo extends JFrame implements ActionListener{
private TextField campo1;
private TextField campo2;
private JButton botao;
public Exemplo(){
//define o tamanho da janela
super.setSize(300, 300);
//srta o titulo da janela
super.setTitle("Exemplo");
//inicializa os campos
campo1 = new TextField(50);
campo2 = new TextField(50);
//inicializa os botoes
botao = new JButton("Clique");
//seta o layout
setLayout(new FlowLayout());
//insere os campos e botãona janela
add(campo1);
add(campo2);
add(botao);
//adiciona um ouvidor de evento no botao
botao.addActionListener(this);
}
//metodo para tratar o evento de botao
public void actionPerformed(ActionEvent e) {
/*
O metodo getSelectedText pega o texto q vc selecionou com o mouse ,
*então basta setar este texto no campo de texto 2
*/
campo2.setText(campo1.getSelectedText());
System.out.println("clicou");
}
}
Quanto ao seu primeiro problema, acontece que WindowAdapter é uma classe que implementa WindowListener.
A interface WindowListener é usada para pegar informações de quando a janela é movimentada, redimensionada, minimizada, fechada, etc.
No seu caso, você deve usar um ActionListener para adicionar no seu botão. A interface ActionListener tem apenas um método: o actionPerformed que recebe notificações de eventos em componentes, como clicar em um botão ou pressionar ‘Enter’ em um campo de texto, por exemplo. O código correto ficaria:
class MeuListener extends ActionListener { // única coisa modificada!
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
}
// e na sua outra classe:
final JFrame janela = new JFrame ("Janela Simples");
janela.setSize(300,100);
JButton botao = new JButton("botao");
botao.addActionListener(new MeuListener());
// ... e o resto dos comandos