将组件设置在页面的中心

时间:2012-02-01 04:03:28

标签: java swing flowlayout

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

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

3 个答案:

答案 0 :(得分:9)

这可以使用GridBagLayout作为mentioned by AVD 1 BoxLayout来实现。有关示例代码,请参阅this answer

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

  1. 我不明白为什么这个答案没有得到更多的投票,但是那边......

答案 1 :(得分:5)

使用GridBagLayout代替FlowLayout。

JPanel panel=new JPanel();
panel.setLayout(new GridBagLayout());
panel.add(new JButton("Sample")); // will use default value of GridBagConstraints

答案 2 :(得分: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