Io utilizzo sempre JFrame poichè fa parte della libreria SWING che è l'evoluzione di AWT (e non una libreria sostitutiva poiché SWING si basa su AWT) pertanto essa è molto più potente. Per quanto riguarda la progettazione della parte grafica del software solitamente decido in base alla complessità e l'importanza del software stesso. Se devo progettare un software in maniera veloce ed è al contempo non molto complesso allora creo una classe che estende JFrame e che implementa i Listener:
se il software è complesso e magari ho bisogno di una gestione degli eventi più ampia creo una classe centrale a cui associo i Listener su classi differenti:
in questo modo per richiamare ed utilizzare ActionListener (quindi la classe listener) basta creare un oggetto nella classe o associare un nuovo oggetto in base di assegnazione del listener, esempio:
poi ci sono altri due metodi (che io uso molto poco) che sono Inner Class e Anonymous Inner Class:
l'ultimo è il più utilizzato solitamente poichè veloce da utilizzare. Quindi ci sono più modi di utilizzare i listener e le classi grafiche, il tutto dipende da quale soluzione è più idonea.
Codice:
public class ClasseEsempio extends JFrame implements ActionListener, WindowListener
{...}
Codice:
public class Frame extends JFrame{
}
public class listener implements ActionListener{
}
Codice:
JButton testButton=new JButton();
testButton.addActionListener(new listener());
Codice:
public classTest{
Button b =newButton();
class MyListener implements ActionListener{
public void actionPerformed (ActionEvent e){}
}
Codice:
public class Test{
Button b =newButton();
b.addActionListener(newActionListener(){
public void actionPerformed (ActionEvent e){
});
}
l'ultimo è il più utilizzato solitamente poichè veloce da utilizzare. Quindi ci sono più modi di utilizzare i listener e le classi grafiche, il tutto dipende da quale soluzione è più idonea.