私は自分の問題を解決したと思いますが、なぜこのように動作するのかわからないので、誰かに説明できると思っています私は今後も同じミスを繰り返すことはありません。ここでBoxLayoutのsetPreferredSize()メソッドは、私が望むように動作するようにはできません
は私が何をしようとしているのコンパイルで簡単な例です:最初は
public class BoxLayoutTest extends JFrame
{
public BoxLayoutTest()
{
setSize(400,300);
JPanel mainPanel = new JPanel(new FlowLayout());
setContentPane(mainPanel);
JPanel subPanel = new JPanel();
subPanel.setLayout(new BoxLayout(subPanel, BoxLayout.PAGE_AXIS));
subPanel.setBackground(Color.BLUE);
JLabel labelTest = new JLabel("This is a test");
subPanel.add(labelTest);
labelTest.setPreferredSize(new Dimension(150, 20));
mainPanel.add(subPanel);
System.out.println(mainPanel.getSize());
}
public static void main(String[] args)
{
BoxLayoutTest testFrame = new BoxLayoutTest();
testFrame.setVisible(true);
}
}
、私はそれが適切なサイズとすべきであるようにJLabelのを含むパネルがリサイズないとの問題を抱えていました。 mainPanel.getSize()のバリエーションをサブパネルの推奨サイズとして使用していたためです。この例では、実際の数値を使用しています。
SOPの行に見られるように、mainPanel.getSize()は、実際には誰かが説明したいと思うものです高さは0で、画面全体が400x300であることは明らかです。
私のパネルにpreferredSizeを設定すべきではないことを伝えてくれてありがとう@Camickr、これはどこから問題が発生したのかを理解するのに役立ちました。
ありがとう!それはそれを説明する! –