java 两个按钮居中_java怎样放两个按钮在窗体的正中间

展开全部

JPanel 放入到BorderLayout.CENTER , 那么会自动填充满整个contentPane的中间, 而JPanel内部还是流式布局, 一行排满 自动换到下一行,从上到62616964757a686964616fe59b9ee7ad9431333365653765下. 所以按钮还是在最上面.

(把JPanel的背景色改成蓝色,就可以清晰的看到JPanel填满了窗口)

1c360834e492c62ba9a8aeef10e2c5b4.png

解决办法:方法一: [绝对布局],通过设置panel 为绝对布局,然后设置按钮的宽高和位置

参考代码import javax.swing.*;

public class JFDemo1 extends JFrame{

public JFDemo1() {

JPanel panel=new JPanel();

panel.setLayout(null);//设置为空布局.或者叫绝对布局

JButton messageButton = new JButton("OK");

JButton closeButton = new JButton("Cancel");

panel.add(messageButton);

panel.add(closeButton);

//粗略的指定下位置,如果要精确的位置,需要进行计算

closeButton.setSize(80, 30);// 指定宽高

closeButton.setLocation(160, 75);//指定位置

messageButton.setBounds(80, 75, 60,30);// 同时指定宽高和位置

add(panel);//默认位置就是BorderLayout.CENTER

setTitle("Demo");// 标题

setSize(320, 230);// 窗口大小

setLocationRelativeTo(null);// 窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗口点击关闭时,退出程序

}

public static void main(String[] args) {

new JFDemo1().setVisible(true);

}

}方法二:[盒布局]import javax.swing.*;

public class JFDemo2 extends JFrame{

public JFDemo2() {

JPanel pane=new JPanel();

BoxLayout layout=new BoxLayout(pane, BoxLayout.X_AXIS);// 水平的盒布局

pane.setLayout(layout);

JButton messageButton = new JButton("OK");

JButton closeButton = new JButton("Cancel");

pane.add(Box.createGlue()); // 挤占ok按钮和窗口左侧空间

pane.add(messageButton);

pane.add(Box.createHorizontalStrut(20));// 按钮之间的水平距离

pane.add(closeButton);

pane.add(Box.createGlue()); // 挤占cancel按钮和窗口右侧空间

add(pane);

setTitle("Demo");// 标题

setSize(320, 230);// 窗口大小

setLocationRelativeTo(null);// 窗口居中

setDefaultCloseOperation(EXIT_ON_CLOSE);// 窗口点击关闭时,退出程序

}

public static void main(String[] args) {

new JFDemo2().setVisible(true);

}

}

总结: 推荐使用方法二,使用盒布局来实现.

一般不推荐使用绝对布局/空布局 来布局窗口, 因为不同的操作系统下显示的效果不完全一致.

并且还需要写大量的代码来计算组件的大小和位置, 当窗口放大和缩小时 还需要重新计算位置

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值