java GUI组件

importjavax.swing.*;publicclassMyFrameWithComponents{publicstaticvoidmain(String[]arg... import javax.swing.*;

public class MyFrameWithComponents {

public static void main(String[] args) {

JFrame frame = new JFrame("MyFrameWithComponents");
// Add a button into the frame
JButton jbtOK = new JButton("OK");
JButton jbCANCEL= new JButton("CANCEL");
frame.add(jbtOK);
frame.add(jbCANCEL);
frame.setSize(400, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null); // New since JDK 1.4
frame.setVisible(true);
}

}

为什么最后的运行结果是一个对话框里只有cancel一个按钮?
展开
 我来答
雪飞潇潇
推荐于2018-03-30 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:879万
展开全部

因为JFrame 默认是边界布局(BorderLayout),如果没有指明组件加载的位置,那么组件默认放到中间,并且如果四周没有别的组件,那么就自动扩展占用全部空间。如果多次加入组件到中间,那么只能显示最后一个组件,因为之前的组件被遮挡了。

修改方法一:

        指明组件添加的位置

frame.add(jbtOK,BorderLayout.NORTH);
frame.add(jbCANCEL,BorderLayout.SOUTH);

效果图一:

        

修改方法二:

        设置JFrame的布局为流布局。然后添加组件到JFrame上

  frame.setLayout(new FlowLayout());
  frame.add(jbtOK);
  frame.add(jbCANCEL);

    效果图



最后建议:

    建议你详细了解三大主要布局的写法和布局的特性。相互嵌套使用就能做出复杂界面了     

            BorderLayout  边界布局

            FlowLayout     流式布局

            GridLayout      表格布局

rx1054752190
2013-12-11
知道答主
回答量:22
采纳率:0%
帮助的人:11.5万
展开全部
默认用BorderLayout布局,而且默认放在中间,所以先放的被后放的遮住了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式