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

现在只能放到上面,但是contentPane设置的明明是center:JPanelpanel=newJPanel();contentPane.add(panel,Bord... 现在只能放到上面,但是 contentPane设置的明明是center:JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.CENTER); panel.add(messageButton); panel.add(closeButton); panel.add(label); 展开
 我来答
雪飞潇潇
2018-06-06 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:838万
展开全部

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

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

解决办法:

  • 方法一: [绝对布局],通过设置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);
}
}

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

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

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

不曾逝去de岁月
2018-06-05 · TA获得超过110个赞
知道小有建树答主
回答量:213
采纳率:75%
帮助的人:37.4万
展开全部
JPanel默认的布局管理器是FlowLayout。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gf123456691
2018-06-05
知道答主
回答量:14
采纳率:20%
帮助的人:1.2万
展开全部
不如清空布局,自己计算坐标,想放哪就放哪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式