Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Java] Gestire JPanel in un Vector

    Ho questo problema....

    .... in un Vector<JPanel> e vi inserisco dei JPanel che creo dinamicamente....
    codice:
    private Vector<JPanel> vectorPanel = new Vector<JPanel>();
    .....
    for (int x=0; x<10; x++) {
         PannelliDinamici pannelloDinamico = new PannelliDinamici();
         pannelloDinamico.setName("pan"+x);
         vectorPanel.add(pannelloDinamico);
    }
    Dove in questi JPanel PannelliDinamici ho un JLabel....
    codice:
    public static JLable labelTesto = new JLabel();
    Da un'altra classe ho bisogno di settare il testo del JLabel di questi pannelli, ma non so come farmi
    restituire il JPanel che mi interessa dal Vector!! Per esempio se volessi settare i label dinamicamite
    in un ciclo for così:
    codice:
    for (int y=0; y<10; y++) {
         vectorPanel.elementAt(y).labelTesto.setText("questo è: "+y);
    }
    ....non funziona!!!

    Come posso farmi restituire dal Vector il JPanel ed i suoi componenti pubblici!?
    Grazie a Tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Non capisco perchè devi utilizzare un campo statico. Dichiaralo privato, ed accedi ad esso tramite metodi getter/setter.

    codice:
    (vectorPanel.elementAt(i)).setTesto("Questo e': "+i);

  3. #3
    Lo dichiaro public static perché devo accedervi direttamente da un'altra classe!

    (vectorPanel.elementAt(i)) restituirebbe un JPanel non un JTextField!!

    Cmq inserire nel Vector i JTextField invece che i JPAnel contenitori
    può semplificarmi di molto il lavoro perché avevo trovato questa
    soluzione:
    codice:
    for (int x=1; x<progrEuro.size(); x++) {
         JTextField campoTesto = (JTextField) vectorPanel.elementAt(x).getComponent(3); // il 3 è il JTextField che mi interessa!!!
         campoTesto.setText("€ "+new Decimali().correggi(getProgressivo(x)));
    }

  4. #4
    Ok... ci sono....
    in sostanza aggiungo in un Vector<JTextField> i JTextField man mano
    che vengono creati i JPanel dinamici, e non devo nemmeno dichiararli
    public static! Fatto ciò, dalla Classe in cui ho il set/get del Vector,
    mi basta questo codice per settare il text...
    codice:
    vectorJTexts.elementAt(x).setText("testo del JTextField "+x);
    Grazie dell'aiuto

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Wolvy23
    Lo dichiaro public static perché devo accedervi direttamente da un'altra classe!

    (vectorPanel.elementAt(i)) restituirebbe un JPanel non un JTextField!!
    Per questo ho usato un "mio" metodo setTesto(). Questo al suo interno fa ciò che deve fare.
    Il tutto era per cercare di rispettare più o meno la OOP...


    Prego.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Wolvy23
    Lo dichiaro public static perché devo accedervi direttamente da un'altra classe!
    Ok, lo dichiari public (non mi piace, ma è consentito)... ma di sicuro non statico. Un oggetto statico è condiviso da tutte le istanze... se lo modifichi in un'istanza, la modifica viene riflessa anche su tutte le altre.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.