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