Chiarimenti sulle GUI

di il
4 risposte

Chiarimenti sulle GUI

Buongiorno a tutti,

sto da poco iniziando ad utilizzare java e sto cercando di capire come funzionano le GUI. Il mio problema è il seguente :

sto scrivendo una semplice applicazione che premuto un pulsante mi faccia apparire una label con una scritta. Il codice è il seguente:

/* CLASSE DELLA GUI */

import javax.swing.*;

public class GUI extends JFrame {

JLabel l = new JLabel();
JButton b = new JButton ("Cliccami e ti saluto");

GUI ()
{
super("PROVA 1");
JPanel p = new JPanel();
p.add(b);
p.add(l);
this.add(p);
this.setSize(500,500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

}

}

/* CLASSE DELL'AZIONE */

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AZIONE {

GUI u = new GUI ();

public void saluto ()
{
u.b.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent ae)
{

u.l.setText("ciaooo");

}
});
}

}

/* CLASSE PRINCIPALE */

public class PROVA1 {

public static void main(String[] args) {

GUI g = new GUI();
AZIONE a = new AZIONE();
a.saluto();

}

}

Il problema principale è che se metto

GUI g = new GUI();

all'interno della classe PROVA1, quando lo mando in esecuzione, mi vengono aperti due frame. Se tolgo questa riga il frame viene aperto una volta sola. Qualcuno mi saprebbe spiegare il motivo?

Grazie

4 Risposte

  • Re: Chiarimenti sulle GUI

    La risposta potrebbe essere che inizialazzo la classe GUI dentro la classe AZIONE e quindi è una ripetizione?
  • Re: Chiarimenti sulle GUI

    Ciao,
    sì esatto: tu chiami due volte new GUI(). Una volta nel main e un'altra volta nel costruttore di Azione (a sua volta richiamato dal main). Ognuna di queste invocazioni visualizza un frame, quindi ottieni due frame.



    PS. Posta il codice nei tag CODE, così si legge meglio.
  • Re: Chiarimenti sulle GUI

    SI hai ragione scusa!

    Ma quindi se io creo un'applicazione con diversi metodi per la stessa gui su più classi diverse, e in ognuna di queste classi inizializzo la gui mi si apriranno tanti frame quante sono le classi in cui la inizialiazzo?

    grazie
  • Re: Chiarimenti sulle GUI

    Dunque... io non sono un esperto nel design (inteso come progettazione) di software. Però quello che mi sembra sensato fare è avere UNA classe che gestisce UN frame, ed evitare possibili sovrapposizioni.

    Comunque attendi risposta da qualcuno più esperto di me.
Devi accedere o registrarti per scrivere nel forum
4 risposte