【问题标题】:JPanel layout in applet小程序中的 JPanel 布局
【发布时间】: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 中正确呈现。

标签: java swing


【解决方案1】:

我不知道你在找什么,但对我来说这很好用。

import java.awt.Component;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestApplet extends JApplet{
    public static void main(String[] args){
        new TestApplet();
    }
    public TestApplet(){
        this.setSize(400,400);
        this.add(getCustPanel());
        this.setVisible(true);
    }
    private JPanel getCustPanel() {
        JPanel panel = new JPanel ();
        panel.setLayout (new BoxLayout(panel, BoxLayout.Y_AXIS));
        addButton ("button1", panel);
        addButton ("button2", panel);
        return panel;
    }
    private void addButton (String text, JPanel container)
    {
        JButton button = new JButton (text);
        button.setPreferredSize (new Dimension(100,20));
        button.setAlignmentX (Component.CENTER_ALIGNMENT);
        container.add (button);
    }

}

【讨论】:

  • 谢谢。我试图在不将其附加到小程序的情况下绘制面板。我正在寻找面板如何“打包”按钮以设置正确的边界。我找不到方法,所以我在代码中做了一个解决方法,将面板添加到小程序中,这样它就可以正确“打包”它,就像在你的示例中一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 2012-08-01
  • 2016-07-31
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多