本文主要是介绍Swing组件布局setLayout(null)和setBounds(int,int,int,int)用法及组件分层显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Swing组件布局setLayout(null)和setBounds(int,int,int,int)用法及组件分层显示
在Swing组件布局中一般性设置控件位置和大小:使用.setBounds(int,int,int,int)设置控件坐标大小.但必须加.setLayout(null);
例如下面这段代码虽然利用了setBounds(int,int,int,int)进行布局,但是运行后图一显示的的结果并不是按照布局显示的,而是按照默认的FlowLayout(每个JPanel对象初始化时都使用FlowLayout布局,)布局显示的
import javax.swing.*;
public class JLabelDemo extends JFrame{
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JPanel pane;
public JLabelDemo(){
pane=new JPanel(); //创建面板
btn1=new JButton("按钮1"); //创建按钮1
btn1.setBounds(100, 100, 100, 100); //setBounds(int,int,int,int)设置控件坐标大小
btn2=new JButton("按钮2"); //创建按钮2
btn2.setBounds(200, 100, 100, 100);
btn3=new JButton("按钮3"); //创建按钮1
btn3.setBounds(100, 200, 100, 100);
pane.add(btn1);
pane.add(btn2);
pane.add(btn3); // 将组件添加到面板中
this.add(pane); //将面板添加到窗体
this.setVisible(true);
this.setBounds(100,100,400,400);
}
public static void main(String args[]){
new JLabelDemo();
}
}
布局管理器 就是管理布局嘛 和他对应的就是用绝对坐标进行定位 你把布局管理器设为null 它不知道怎么布局了 不知道组件放到哪 啊~~
所以,只能用绝对坐标来进行定位!
import javax.swing.*;
public class JLabelDemo extends JFrame{
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JPanel pane;
public JLabelDemo(){
pane=new JPanel(); //创建面板
pane.setLayout(null);
btn1=new JButton("按钮1"); //创建按钮1
btn1.setBounds(100, 100, 100, 100); //setBounds(int,int,int,int)设置控件坐标大小
btn2=new JButton("按钮2"); //创建按钮2
btn2.setBounds(200, 100, 100, 100);
btn3=new JButton("按钮3"); //创建按钮1
btn3.setBounds(100, 200, 100, 100);
pane.add(btn1);
pane.add(btn2);
pane.add(btn3); // 将组件添加到面板中
this.add(pane); //将面板添加到窗体
this.setVisible(true);
this.setBounds(100,100,400,400);
}
public static void main(String args[]){
new JLabelDemo();
}
}
控件被添加的先后顺续决定控件是否可见.即:窗口按层来显示控件./*先添加的控件放在第一层后添加的放在后一层.*/如果先添加的控件大小大于后添加的并两控件处于同一位置则先添加的控件覆盖后添加的.因此如果想然所有控件都可见则需将在同一位置的两控件择面积小的先添加而后才是面积大的.下面举例说明这一点
pane.add(btn2);
这篇关于Swing组件布局setLayout(null)和setBounds(int,int,int,int)用法及组件分层显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!