Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268

    aggiungere JLabel a un JPanel a runtime

    Ciao, in un JFrame ho un JPanel e un desktopPane e un menu;
    Io vorrei che al click di una voce di menù si apra nel desktopPane un InternalFrame e vengano aggiunte delle label al mio panel.

    codice:
      
    private void regOpeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {                                                     RegistroOperazioni ro = new RegistroOperazioni(); //questo è la mia InternalFrame
          int width, hight;
          width = deskTop.getWidth();
          hight = deskTop.getHeight();
          ro.setSize(width, hight);
          
          deskTop.add(ro);
          JLabel meseCorrente = new JLabel("Mese Corrente");
          
          JLabel trimestre =  new JLabel ("Ultimi 3 Mesi");
          JLabel cerca = new JLabel("Cerca");
          sidePanel.add(meseCorrente);
          sidePanel.add(trimestre);
          sidePanel.add(cerca);
          sidePanel.revalidate();
          sidePanel.repaint();
    
    
           ro.show();
        }
    riesco a visualizzare InternalFrame, ma le JLabel non vengono visualizzate nel JPanel

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    Ciao, in un JFrame ho un JPanel e un desktopPane e un menu;
    Io vorrei che al click di una voce di menù si apra nel desktopPane un InternalFrame e vengano aggiunte delle label al mio panel.

    codice:
          sidePanel.revalidate();
          sidePanel.repaint();
    In generale la questione è: il "contenitore" (sidePanel nel tuo caso) usa un layout manager (e quale) ... oppure no? (questo non l'hai spiegato).

    Se sidePanel usa un layout manager, in genere basta un sidePanel.validate(); (e questo, perlomeno con i layout manager semplici es. BorderLayout, FlowLayout, GridLayout).
    Se sidePanel non usa un layout manager, va posizionato/dimensionato esplicitamente e poi basta un sidePanel.repaint();
    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 2010
    Messaggi
    268
    Quote Originariamente inviata da andbin Visualizza il messaggio
    In generale la questione è: il "contenitore" (sidePanel nel tuo caso) usa un layout manager (e quale) ... oppure no? (questo non l'hai spiegato).

    Se sidePanel usa un layout manager, in genere basta un sidePanel.validate(); (e questo, perlomeno con i layout manager semplici es. BorderLayout, FlowLayout, GridLayout).
    Se sidePanel non usa un layout manager, va posizionato/dimensionato esplicitamente e poi basta un sidePanel.repaint();
    sidePanel non usa un contenitore. Viene mostrato nel Frame principale della mia applicazione lo scopo sarebbe quello di avere un "pannello" ove mostrare alcune informazioni agli utenti

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    sidePanel non usa un contenitore.
    Che vuol dire?? Tutti i componenti Swing tecnicamente sono dei "contenitori" (derivano da Container), anche se ovviamente solo alcuni ha senso che contengano altri componenti.
    Se sidePanel è un JPanel, è appropriato per contenere altri componenti e quindi devi sapere e gestire tu il fatto che abbia o meno un layout manager.

    Ripeto la cosa, che vale in generale: se in un contenitore che è già visibile si aggiungono/tolgono componenti, allora se usa un layout manager: di norma basta validate(); se non usa un layout manager (=posizionamento "assoluto"): di norma basta un repaint().
    Tutto qui.
    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 2010
    Messaggi
    268
    il leyoutManager è settato a freedesign
    ho provato a mettere solo repaint(), ma non mi mostra niente

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    il leyoutManager è settato a freedesign
    Hai "disegnato" il resto della tua interfaccia con un editor "visuale"? (NetBeans?). Se sì, è probabile (non uso NetBeans) che "freedesign" stia a significare l'uso del layout manager GroupLayout di Swing, che è parecchio complesso (se così, guarda allora il codice generato ....).
    E in tal caso non solo un layout manager "c'è" ma devi seguire le sue regole, ovvero indicare tutti i constraint (vincoli) necessari per fargli capire come deve stare il componente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Tag per questa discussione

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 © 2026 vBulletin Solutions, Inc. All rights reserved.