【发布时间】:2010-11-18 10:25:00
【问题描述】:
我有一个不属于 JFrame 的 JPanel。由于各种原因,我不得不通过自己的“更新”方法调用面板的绘制方法。
这是我的代码:
public void onLoad ()
{
panel = new JPanel ();
panel.setBounds (0,0,Main.WIDTH,Main.HEIGHT);
panel.setLayout (new BoxLayout (panel, BoxLayout.Y_AXIS));
addButton ("button1", panel);
addButton ("button2", panel);
}
private void addButton (String text, Container container)
{
JButton button = new JButton (text);
button.setPreferredSize (new Dimension (100,20));
button.setAlignmentX (Component.CENTER_ALIGNMENT);
container.add (button);
}
public void onRender (Graphics2D g)
{
panel.paint (g);
}
这只会绘制面板的背景颜色。如果我在 addButton 方法中添加 button.setBounds(...) 那么它会绘制按钮但不受 BoxLayout 的影响。
所以我希望按钮显然受到 BoxLayout 的影响。我对 Swing 的工作原理不是很了解,所以我不确定如何做到这一点。 JFrame 有一个 pack() 方法,我认为这是我需要的,但是对于 JPanels 有一些等价物,因为 JPanels 没有那个方法。
【问题讨论】:
-
你在使用 JApplet 类吗?我相信 Swing 组件不会在常规 Applet 中正确呈现。