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