在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();
}
}
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);