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

    [java] Problemi con getBounds()

    Ciao,
    sto lavorando con un pannello coi tabs e mi trovo davanti un problema per me strano: in un tab ho inserito un JPanel; se applico il bordo a questo JPanel vedo che tale pannello è grande quanto tutto il tab che lo ospita, se gli richiamo il metodo getBounds() invece vedo che ha width e height pari a zero!

    Ecco il codice:

    codice:
      public void windowDraw(){
        this.setBounds(150,50,600,400);
        JTabbedPane tabPanel = new JTabbedPane();
        this.setContentPane(tabPanel);
    
        tabPanel.addTab(...);
        tabPanel.addTab("Configurazione", null, configurazionePanelDraw(), "Modifica la configurazione del sistema");
      }
    
      public JPanel configurazionePanelDraw(){
        JPanel pane = new JPanel();
        pane.setLayout(null);
    
        JPanel configurazione = new JPanel();
        configurazione.setBorder(BorderFactory.createTitledBorder("Dati azienda"));
    
        System.out.println(pane.getBounds());
    
        configurazione.setBounds(10,10,(pane.getWidth()-20),25);
    
        pane.add(configurazione);
        return pane;
      }
    In questo modo non riesco a specificare che il pannello figlio deve essere più piccolo di x pixel rispetto al famigerato padre..

    Ciao e grazie in anticipo!


  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Se proprio vuoi lavorare con posizioni e dimensioni, allora devi privare il contenitore del LayoutManager di default.
    Ti consiglio, allora, questo:

    Crea un JPanel con LayoutManager nullo. Aggiungi questo JPanel al JTabbedPane. Ora, per ottenere l'effetto voluto, aggiungi i vari componenti grafici al tuo pannello, come se li stessi aggiungendo al JTabbedPane.

    Esempio:
    codice:
    JPanel mioPanel = new JPanel();
    mioPanel.setLayout( null );
    
    JTabbedPane jtp = new JTabbedPane()
    jtp.addTab("Configurazione", null, mioPanel, "Modifica la configurazione del sistema");
    
    mioPanel.add( configurazionePanelDraw() );
    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

  3. #3
    Anche così ottengo lo stesso identico risultato.. e poi se vedi faccio la medesima cosa con il metodo configurazionePanelDraw():
    creo un nuovo pannello con layout manager nullo.


  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Eh già... non avevo notato che all'interno del metodo creavi la stessa struttura...
    Allora devo proprio fare delle prove, perchè la cosa è alquanto strana... :master:

    Se ottengo dei risultati, te li posto.


    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

  5. #5

  6. #6
    Provo a lanciare un'idea...qualcosa del genere non può andare:

    codice:
    Dimension d = new Dimension(pane.getWidth()-20,25);
    configurazione.setPreferredSize(d);
    //poi lo posizioni nello punto che ti interessa
    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

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