Domanda GUI in JAVA

Stato
Discussione chiusa ad ulteriori risposte.

carbos

Utente Emerald
14 Agosto 2010
957
132
122
477
Sto studiando le AWT in Java e ho ancora molti dubbi sulla gestione della grafica di un software, la gerarchia da applicare, io pensavo 1 classe dove estendevo Frame, un altra dove estendevo sia le ActionListener e sia i WindowAdapter, però in questo caso non so poi come aggiungerla al frame visto che estendo windowadapter e implemento actionlistener... E quindi volevo chiedere a voi il miglior metodo per gestire le GUI, creo queste due classi?
Poi ho visto che ci sono alcuni che usano anche JFrame, qual è il migliore?Ci sono anche altre librerie migliori?
 
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:

Codice:
public class ClasseEsempio extends JFrame implements ActionListener, WindowListener
{...}
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:
Codice:
public class Frame extends JFrame{
}
public class listener implements ActionListener{
}
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:
Codice:
JButton testButton=new JButton();
testButton.addActionListener(new listener());
poi ci sono altri due metodi (che io uso molto poco) che sono Inner Class e Anonymous Inner Class:
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.
 
[...]

Codice:
public class Test{
Button b =newButton();
b.addActionListener(newActionListener(){
public void actionPerformed (ActionEvent e){
});
}

[...]

Per completezza aggiungo solo che, se usi Java 8, potresti trovarti molto bene anche con le espressioni lambda:
PHP:
public class Test {
    JButton b = new JButton();

    b.addActionListener(e -> {
        // your code here
    });
}
Personalmente le ho utilizzate nell'ultimo progetto universitario in Java e le ho trovate molto comode. Inoltre, nel main, ricordati di utilizzare (se hai calcoli più o meno complessi da fare, ma secondo me in ogni caso):
PHP:
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
           // your code here
        }
    });
}
 
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:

Codice:
public class ClasseEsempio extends JFrame implements ActionListener, WindowListener
{...}
Ma qui dopo devo ridefinire tutte le classi di WindowListener?
 
Stato
Discussione chiusa ad ulteriori risposte.