non riesco a far funzionare questo programma (mi mancano dei pezzi) qualche buon cuore ha voglia di metterci un occhietto????

il programma dovrebbe avere le seguenti caratteristiche:
-un campo di testo di dimensione 40 colonne inizialmente vuoto.
-un bottone "Leggi" (e qui ci sono)
-un etichetta "totale alfabetici" (e qui c'è)
-un campo di testo di 20 colonne inizialmente vuoto
-tutte e 4 le componenti devono avere il font helvetica, plain, 18
-digitando il nome di un file nel primo campo di testo quando si preme il bottone "Leggi" il programma legge il file , conta il numero dei caratteri alfabetici presenti e ne visualizza il totale nel secondo campo di testo

inutile aggiungere che : non riesco a far stare i due campi di testo uno sopra l'altro ma me ne compare solo uno (o forse i due attaccati) e non so che funzione dare a AL1 perchè faccia tutte queste belle cose che deve fare

qui si seguito quello che sono riuscita a scrivere me tapina
grazie mille a chi mi vorrà aiutare
ciao silvia

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class P2_prova extends JFrame {
//le dichiarazioni private
private JTextField textfield1;
private JButton b1;
private JLabel etichetta;
private Box box;
private JTextField textfield2;
private JPanel panel;

public P2_prova(){

//campo di testo 1
textfield1 = new JTextField(40);
textfield1.setFont(new Font("Helvetica", Font.PLAIN, 18));

//definisco gli elementi
//bottone b1 a cui viene associata la funzione svuota
b1 = new JButton("Leggi");
b1.addActionListener(new AL1());


//etichetta
etichetta = new JLabel("Totale alfabetici:");
//campo di testo
textfield2 = new JTextField(10);
textfield2.setFont(new Font("Helvetica", Font.PLAIN, 18));

//definisco un pannello di tipo FlowLayout
//e vi inserisco gli elementi
panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(b1);
panel.add(etichetta);
panel.add(textfield1);



//definisco un box in cui inserire gli elementi barra e pannello
// e lo aggiungo alla finestra
box = new Box(BoxLayout.Y_AXIS);
box.add(panel);
getContentPane().add(box);

//definisce le dimensioni di default
pack();
//chiude il programma
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//rende visibile la finestra
setVisible(true);
}

//azione applicata al bottone b1
class AL1 implements ActionListener{
public void actionPerformed(ActionEvent e){



}
}

public static void main(String[] args) {
new P2_prova();
}
}