Problema: Listeners e salvar informação

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.


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.


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