如何在面板中央设置组件(比如按钮)?
我使用布局约束Flowlayout
作为中心,但我在面板的顶部中心位置获得了按钮。
答案 0 :(得分:9)
这可以使用GridBagLayout
作为mentioned by AVD 1 或BoxLayout
来实现。有关示例代码,请参阅this answer。
就我个人而言,我会使用GBL,因为需要更少的代码行才能使组件布局和放置。在屏幕上(以父容器为中心)。
答案 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。