我有一个JPanel不是JFrame的一部分。由于各种原因,我必须通过我自己的“更新”方法来调用面板的绘画方法。在applet中的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组件在常规Applets中不能正确渲染。 – perp 2010-11-18 12:49:06