JTextField com TextListener

To tentando fazer com que assim que eu começar a digitar no 1º JTextField, o segundo se torne editavel… mas nao estou conseguindo! Ate cheguei a criar um TextListener mas nao consigo adiciona-lo ao JTextField… alguem pode me ajudar?! Aqui esta o meu código ate agora…

//IMPORTAÇÕES
import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class GuiGrades extends JFrame {

// DECLARO OS COMPONENTES QUE IREI USAR AQUI PARA PODER USAR EM QUAISQUER METODOS!
private JTextField jtfB1;
private JTextField jtfPI;
private JTextField jtfB2;
private JButton bCalc;
private JTextField jtfEx;
	
public GuiGrades() { // METODO CONSTRUTOR

	this.setTitle("Notas"); // Coloca o titulo da janela
	this.setSize(200, 200); // Define o tamanho da janela
	this.setLocationRelativeTo(null); // Onde inicia a janela (Centro)
	this.setResizable(false); // Não redimensionavel
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Fecha o aplicativo quando a pessoa clica no botão X

	JPanel panel = gui(); //CRIA UM OBJETO PANEL COM AS CARACTERISTICAS DO METODO JPANEL gui

	Container c = this.getContentPane();
	c.add(panel, "Center");
}

public JPanel gui() {
	JPanel panel = new JPanel();
	panel.setLayout(new GridLayout(5, 2, 3, 3));
	panel.setBorder(BorderFactory.createTitledBorder("Digite suas notas"));
	
	panel.add(new JLabel("B1:"));
	jtfB1 = new JTextField(5);
	panel.add(jtfB1);
			
	panel.add(new JLabel("PI:"));
	jtfPI = new JTextField(5);
	panel.add(jtfPI);
	jtfPI.setEditable(false);
	jtfPI.setFocusable(false);

	panel.add(new JLabel("B2:"));
	jtfB2 = new JTextField(5);
	panel.add(jtfB2);
	jtfB2.setEditable(false);
	jtfB2.setFocusable(false);

	panel.add(new JLabel(""));

	bCalc = new JButton("Calcular");
	panel.add(bCalc);

	panel.add(new JLabel("Exame:"));
	jtfEx = new JTextField(5);
	panel.add(jtfEx);
	jtfEx.setEditable(false);
	jtfEx.setFocusable(false);

	return panel;
}

class TextAdder implements TextListener {
	 public void textValueChanged( TextEvent e )  {
		Object source = e.getSource();
		if (source == jtfB1) 
			jtfB2.setEditable(true);
		
	}
}

public static void main(String[] args) {
	GuiGrades run = new GuiGrades();
	run.setVisible(true);
}

}

Muito obrigado a quem me ajudar! Obrigado MESMO!!! =D

Opa, beleza?!Segue ai, um exemplo:

import java.awt.*;
import javax.swing.*;
 import java.awt.event.*;
 
 public class TextListenerTester extends JFrame implements TextListener {
 	TextField texto1, texto2;
    public TextListenerTester(String s) {
       super(s);
 
       setLayout(new FlowLayout());
        texto1 = new TextField(10);
 	   
       add(texto1);
 	    
 	    texto2 = new TextField(10);
 	    texto2.setEditable(false);
 	    add(texto2);
       texto1.addTextListener(this);
       texto2.addTextListener(this);
    }
 
    public void textValueChanged(TextEvent e) {
       texto2.setEditable(true);
    }
 
    public static void main(String[] args) {
       TextListenerTester textListenerTester = new TextListenerTester("Text Listener Tester");
 
       textListenerTester.setSize(400,400);
       textListenerTester.setVisible(true);
    }
 
 } 

Voce pode fazer com que ao se pressionar uma tecla dentro do campo 1, ele verifica o tamanho da string existente no campo 1. Se o tamanho for maior do que zero, ele habilita o campo 2. voce pode implementar tbm para quando o tamanho do campo voltar a ser zero, ou seja, se o campo 1 for todo apagado, voce pode novamente desabilitar o campo 2, fica assim:

espero ter ajudado,
Abraços