0

如何在面板中心设置组件(比如按钮)?

我使用Flowlayout布局约束作为中心,但我在面板的顶部中心位置获得按钮。

4

3 回答 3

10

这可以GridBagLayout使用AVD 1BoxLayout. 有关示例代码,请参阅此答案

就我个人而言,我会为此使用 GBL,因为需要更少的代码行来让组件布局和显示在屏幕上(以父容器为中心)。

  1. 我不明白为什么这个答案没有得到更多的赞成票,但除此之外..
于 2012-02-01T04:25:05.737 回答
5

使用GridBagLayout而不是 FlowLayout。

JPanel panel=new JPanel();
panel.setLayout(new GridBagLayout());
panel.add(new JButton("Sample")); // will use default value of GridBagConstraints
于 2012-02-01T04:07:36.837 回答
0

使用null布局并设置按钮的边界,如下所示:

// assuming you're extending JPanel
private JButton button; // data field

...

this.setLayout(null);
this.addComponentListener(new ComponentAdapter(){
   public void componentResized(ComponentEvent e){
       setButtonBounds();
   }
});

private void setButtonBounds(){
   int bw = 90; // button width
   int bh = 30; // button height
   int w = getWidth();
   int h = getHeight();
   button.setBounds((w - bw) / 2, (h - bh) / 2, bw, bh);
}

如果您开始获得许多按钮或复杂的布局,请考虑使用MigLayout

于 2012-02-01T04:09:40.220 回答