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

    Principiante chiede scusa..

    Ciao a Tutti!!
    sicuramente il problema è abbastanza sciocco. Sto cercando di capire se riesco a capire questo linguaggio , sto leggendo un pò di manuali e su internet come ho fatto per vb, in più cerco di fare subito quelle 5-6 operazioni base che mi permettono (mentalmente almeno) di incominciare a muovermi per fare qualcosa che posso usare praticamente. E mi sono bloccato sulla prima questione. In sostanza voglio semplicemente che cliccando un bottone (premi), questo mi generi una label(et) dal nulla piazzandomala su un panel(p).. tutto qui. E quindi, perchè questo stupido codice non funziona?


    codice:
    private void premiActionPerformed(java.awt.event.ActionEvent evt) {                                      
          
              JLabel et=new JLabel();
              et.setText("kkk");
              p.add(et);
               
        }
    Se non vorrete rispondere per l'idiozia della richiesta... lo capirò.

    cmq vi ringrazio, che senza questo forum non sarei nemmeno riuscito a fare hello world!!

  2. #2
    usa il tasto code correttamente... alla fine devi scrivere [/CODE]
    Tornando al tuo problema....il codice è un po pochino però
    non ti conviene creare prima la tua label ed al momento opportuno settare il setVisible a true?


    codice:
       JLabel et=new JLabel("my_label");
       p.add(et);
       et.setVisible(false);
       ....
       ....
       ....
       private void premiActionPerformed(java.awt.event.ActionEvent evt) {
          et.setVisible(true);
          repaint();
       }

    ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Ciao!! Grazie per avermi risposto per prima cosa. E poi scusa per il codice scritto male... direi che non inizio proprio bene

    Per il problemino, no, non voglio precreare la label. In realtà volevo subito capire come creare gli oggetti dinamicamente. Nel mio proggettino non saprò quante label avrò da creare in quanto saranno decise da un text di input. Quindi dovrò creare tanti oggetti quanti richiesti. Pensavo che il codice sotto fosse corretto e in realtà facendo il debug le label le crea pure ma non vanno sul panel.. restano chissa dove. Ora smembrando il probelma, ritorniamo al codice iniziale, dove non riesco a creare nemmeno una label premendo un tasto.. E li secondo me che mi incastro. Avevo dato per scontato che ci fossero dei similitudini con vb.net, ma non è proprio cosi.

    codice:
    private void premiActionPerformed(java.awt.event.ActionEvent evt) {                                      
          for (int i=0; i<x; i++) {
              JLabel et=new JLabel("et"+i);
              et.setName("et"+i)
              p.add(et+i); //magari qua il codice non è proprio corretto ma tanto è inutile se non risolvo prima il problema iniziale
         }
               
        }

    Edit: Aggiungo che per il momento non volevo creare un array di oggetti, voglio fare le cose gradualmente cercando di capire il più possibile come funziona java.
    Grazie!!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da eternauta
    facendo il debug le label le crea pure ma non vanno sul panel.. restano chissa dove.
    Quando si vuole aggiungere/rimuovere un componente in un "contenitore" che è già visibile, bisogna prestare attenzione alla questione del layout, ovvero se il contenitore usa o no un layout manager.
    Se usa un layout manager, dopo ogni modifica va fatto un validate() sul contenitore (questo vale per tutti i layout manager basilari: es. BorderLayout, FlowLayout, GridLayout).
    Se non usa un layout manager, il componente deve anche essere posizionato/dimensionato esplicitamente e poi va fatto un repaint() sul contenitore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie..
    Ho impostato il layout manager sul panel già disegnato, e usato il comando convalidate():
    In vero, non ho capito perchè serve, ma di certo funziona.

    posto il codice funzionante nel caso qualcun'altro avesse questo problema ad iniziare con la creazione di oggetti in modo dinamico. In questa maniera si possono ottenere tanti oggeti quanti inseriti in una text (info)..

    Grazie a tuitti ancora!

    codice:
        private void premiActionPerformed(java.awt.event.ActionEvent evt) {                                      
          double e;
          e=Double.parseDouble(String.valueOf(info.getText()));
             for (int i=1; i<e+1; i++){
                JLabel et=new JLabel("et"+1);
                et.setBorder(BorderFactory.createLineBorder(Color.red));
                p.add(et);
                //et.setText("et"+i);
                et.setName("et"+i);
                et.setText(et.getName());
                p.validate();
             }
        }

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.