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一个按钮? 展开
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一个按钮? 展开
2个回答
展开全部
因为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 表格布局
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询