Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    [Java AWT - Swing] Alcune domande sui componenti

    Ciao a tutti.

    Sto studiando in questi giorni la parte relativa ad AWT.
    Sono alla parte relativa ai bottoni e visto che la creazione di un Bottone avviene in questo modo:
    codice:
    Button bottone = new Button("Etichetta");
    add(bottone);
    bottone.addActionListener(this);
    Mi stavo chiedendo: come creare dei bottoni durante il runtime?

    Ho pensato a questo perchè sto progettando una rubrica telefonica, e l'intenzione sarebbe quella di mostrare i nomi/cognomi dei contatti, e al click su uno di essi mostrare a fianco i relativi campi. E dato che i contatti vengono aggiunti durante l'esecuzione mi chiedevo come posso creare dei bottoni (o comunque un qualsiasi altro componente di quel tipo) durante il runtime.

    L'altra domanda riguarda appunto le 2 librerie citate nel Titolo:
    Ho sentito parlare molto bene di Swing e mi è stata consigliata anche senza studiare prima AWT, voi che dite?

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java AWT - Swing] Alcune domande sui componenti

    Originariamente inviato da Patrick Jane
    Sto studiando in questi giorni la parte relativa ad AWT.
    Tra l'altro ormai AWT è "old". Che studi AWT giusto per iniziare .... va bene. Ma ormai c'è Swing che è decisamente più ampio e flessibile.

    Originariamente inviato da Patrick Jane
    Mi stavo chiedendo: come creare dei bottoni durante il runtime?
    Sempre new Button(..) se ne vuoi creare uno nuovo. Non cambia niente, la istanza la devi creare se non l'hai già.

    Solo che se vuoi inserire e quindi visualizzare un componente in un contenitore dopo che il contenitore è già stato visualizzato a video, devi rivalidare il layout manager (se ne usi uno) con un validate() sul contenitore (dipende anche dal layout manager comunque per certi casi critici).

    Originariamente inviato da Patrick Jane
    Ho sentito parlare molto bene di Swing e mi è stata consigliata anche senza studiare prima AWT, voi che dite?
    Sì, come ho detto sopra, AWT è old ... meglio Swing. Swing però non sostituisce del tutto AWT. Si basa su AWT per molti aspetti. Ovviamente un conto sono i componenti AWT (es. Button) e un altro conto sono i componenti Swing (Es. JButton).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123

    Re: Re: [Java AWT - Swing] Alcune domande sui componenti

    Originariamente inviato da andbin
    Sempre new Button(..) se ne vuoi creare uno nuovo. Non cambia niente, la istanza la devi creare se non l'hai già.

    Solo che se vuoi inserire e quindi visualizzare un componente in un contenitore dopo che il contenitore è già stato visualizzato a video, devi rivalidare il layout manager (se ne usi uno) con un validate() sul contenitore (dipende anche dal layout manager comunque per certi casi critici).
    Intanto grazie per la risposta!

    Ok, ora è più chiaro. Non ho ancora studiato il layout manager, quindi appena lo studierò ci capirò sicuramente di più!

    Una volta creata l'istanza la devo sempre aggiungere tramite add() (di Component) e tramite anche addActionListener(this)?
    e una volta creato un bottone devo memorizzarlo in una struttura? (tipo array, o ArrayList) oppure una volta creato "non sparisce"?

    Grazie.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [Java AWT - Swing] Alcune domande sui componenti

    Originariamente inviato da Patrick Jane
    Una volta creata l'istanza la devo sempre aggiungere tramite add() (di Component) e tramite anche addActionListener(this)?
    La add() si fa per aggiungere il componente "strutturalmente" dentro un contenitore (qualunque cosa che è-un java.awt.Container) mentre addActionListener() serve per registrare un ActionListener sul componente .... che nel caso di un pulsante mi pare il minimo per poter fare "qualcosa" alla pressione.

    Originariamente inviato da Patrick Jane
    e una volta creato un bottone devo memorizzarlo in una struttura? (tipo array, o ArrayList) oppure una volta creato "non sparisce"?
    Se la interfaccia si basa su un numero fisso/predefinito di componenti tipicamente si tengono i riferimenti ai componenti "utili" in variabili di istanza della tua classe.

    Se devi creare un numero arbitrario di componenti a runtime (es. N coppie di Label+Button dove Label e Button sono correlati tra di loro con una certa logica), allora sì, una tua struttura dati specifica è sicuramente utile/appropriata. Ma dipende da cosa devi fare.

    Se vuoi visualizzare un numero arbitrario di contatti potresti usare un java.awt.List per mostrare nomi/cognomi e poi avere solo 2 pulsanti fissi es. Aggiungi ed Elimina e magari alcuni Label (predefiniti) per mostrare dei dati di un contatto selezionato. In questo caso non ci sarebbero componenti da creare "dinamicamente".
    Dipende da come vuoi gestire e presentare i dati ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ok Grazie per i chiarimenti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.