Visualizzazione dei risultati da 1 a 2 su 2

Discussione: dimensioni JPanel

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76

    dimensioni JPanel

    ciao ragazzi una semplice domanda...sto realizzando una applicazione java provvista di una interfaccia java swing.Ora se creo un pannello, e vi inserisco dei componenti gragici all'interno e provo a visuallizzarlo, tutto funziona correttamente, viene visualizzato cosi come atteso. Inoltre quando creo il suddetto pannello non gli assegno una dimensione esplicita, ma questi si dimansiona in base agli elementi che contiene.Ora il problema pero è che dovrei recuperare da codice l'altezza effettiva del pannello appena creato, e non avendola impostata mi viene restituito sempre 0. Come posso fare? è possibile ottenere l'eltezza del componente anche senza averla esplicitamente specificata ? GRAZIE

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

    Re: dimensioni JPanel

    Originariamente inviato da alf83
    Ora il problema pero è che dovrei recuperare da codice l'altezza effettiva del pannello appena creato, e non avendola impostata mi viene restituito sempre 0. Come posso fare? è possibile ottenere l'eltezza del componente anche senza averla esplicitamente specificata ? GRAZIE
    La dimensione del pannello dipende dal layout manager in cui lo metti!! E comunque non esiste una sola dimensione, ogni componente ha 4 dimensioni: una dimensione "preferita" (getPreferredSize), una dimensione minima (getMinimumSize), una dimensione massima (getMaximumSize) e una dimensione "attuale" (getSize).

    Se vuoi capire meglio, prova questo:

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class TestFrame extends JFrame
    {
        private JPanel panel;
        private JButton button1;
        private JButton button2;
    
        public TestFrame ()
        {
            super ("Test Frame");
            setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    
            panel = new JPanel ();
    
            infoPanel ("--A--");
    
            button1 = new JButton ("Button1");
            panel.add (button1);
    
            infoPanel ("--B--");
    
            button2 = new JButton ("Button2");
            panel.add (button2);
    
            infoPanel ("--C--");
    
            getContentPane ().add (panel);
    
            infoPanel ("--D--");
    
            pack ();
    
            infoPanel ("--E--");
    
            button1.addActionListener (new ActionListener ()
            {
                public void actionPerformed (ActionEvent e)
                {
                    infoPanel ("--F--");
                }
            });
        }
    
        private void infoPanel (String text)
        {
            System.out.println (text);
            System.out.println ("size: " + panel.getSize ());
            System.out.println ("preferred size: " + panel.getPreferredSize ());
        }
    
        public static void main (String[] args)
        {
            SwingUtilities.invokeLater (new Runnable ()
            {
                public void run ()
                {
                    TestFrame f = new TestFrame ();
                    f.setVisible (true);
                }
            });
        }
    }
    Una volta visualizzata la finestra, prova a ridimensionarla e poi premi Button1
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.