一、中间容器
浙式Swing的中间容器包含了一些可以被使用在许多不同环境下的中间层容器,主要包括面板容器(JPanel类)、分隔窗格(JSplitPane类)、带滚动条的窗格容器(JScrollPane类)、工具栏(JToolBar类)等。它们都是JComponent的子类,通常放在其他容器类中。
public class DialongDemo01 extends JDialog{
public DialongDemo01(JFrame jframe) {
super(jframe,true);
this.setBounds(100, 100, 700, 500);
Container container1= this.getContentPane();
container1.setLayout(null);
//container.add(new Label("大数据五班"));
JButton button1 = new JButton("我是五班");
button1.setBounds(30, 30, 200, 50);
container1.add(button1 );
}
public static void main(String[] args) {
JFrame j=new JFrame();
j.setVisible(true);
j.setBounds(100, 100, 700, 500);
j.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container container= j.getContentPane();
container.setLayout(null);
JButton button = new JButton("我要登录");
button.setBounds(30, 30, 200, 50);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DialongDemo01 s=new
}
})
container.add(button);
}
}
//面板作为容器不等单独存在,必须放在其他容器 JFrame,JDialog
public class JPaneDemo extends JFrame{
public JPaneDemo() {
Container container1= this.getContentPane();
container1.setLayout(new GridLayout(2,1,10,10));
JPanel panel=new JPanel(new GridLayout(1,3));
JPanel.add(new JButton("1"));
JPanel.add(new JButton("2"));
JPanel.add(new JButton("3"));
container1.add(Panel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setBuonds(100,100,500,500);
}
public static void main(String[] args) {
new JPaneDemo();
}
}
public class JScrollDemo extends JFrame{
public JScrollDemo() {
Container container1= this.getContentPane();
//文本域
JTextArea textarea=new JTextArea(20,50);
textarea.setText("大数据五班");
//scroll面板
JScrollPane srcollpane=new JScrollPane(textarea);
JPane
container1.add(srcollpane);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setBuonds(100,100,500,500);
}
public static void main(String[] args) {
new JScrollDemo();
}
}
二、布局管理
当容器中包含多个组件时,组件的布局(包括位置和大小)就显得十分重要。Java 布局组件的基本策略是采用布局管理器。每个容器(如顶层容器的内容窗格)都有一个默认的布局管理器,开发者可以通过容器的setLayout()方法改变容器的布局管理器。
1.FlowLayout布局管理器
FlowLayout定义在Java.awt包中,是JPinel容器的默认布局管理器他按照从上到下、从左到右()的规划将添加到容器中的组件一次排序,如果一行放满后就另起一行。
构造方法:
(1)FlowLayout():无参数的构造方法,创建一个对齐方式 为居中、水平和垂直方向间距为5像素的布局管理器对象。
(2)FlowLayout(int align):创建一个对齐 方式为align的布局管理器对象。align 是在FlowLayout类中定义的常量LEFT(居左)、RIGHT(居右)、CENTER(居中)、LEADING(沿容器左侧对齐)和TRAILING(沿容器右侧对齐)中的一个。
(3)FlowLayout(int align,int hgap,int vgap):创建一个对齐方式为 align、水平间距为hgap像素、垂直间距为vgap像素的布局管理器对象。
public static void main(String[] args) {
JFrame j=new JFrame();
j.setVisible(true);
j.setBounds(100, 100, 700, 500);
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
j.setLayout(new FlowLayout());
JButton button1=new JButton("button1");
JButton button2=new JButton("button2");
JButton button3=new JButton("button3");
JButton button4=new JButton("button4");
JButton button5=new JButton("button5");
JButton button6=new JButton("button6");
this.setLayout(new Flowayout(Flowayout.RIGHT));
}
}
2. BorderLayout布局管理器
BorderLayout是JFrame和JDialog两种容器的默认布局管理器,它将容器分为5个部分,分别命名为North、South、West、East和Center。在使用这种布管理器管理组件的排列时.需要为组件指明放的具体位置,默认位置为中间位置。
构造方法:
(1)BorderLayout():无参数的构造方法,创建一个组件之间水平和垂直间距均为零的布局管理器对象。
(2)BorderLayout(int hgap,int vgap) :创建个组件之间水 平间距为hgap、垂直间距为vgap的布局管理器对象
public class TestBorderLayout {
public static void main(String[] args) {
JFrame j=new JFrame();
j.setVisible(true);
j.setBounds(100, 100, 700, 500);
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//j.setLayout(new FlowLayout());不传参数,默认居中
//j.setLayout(new FlowLayout(FlowLayout.RIGHT));
JButton button1=new JButton("east");
JButton button2=new JButton("west");
JButton button3=new JButton("south");
JButton button4=new JButton("north");
JButton button5=new JButton("居中");
J.add(east,BorderLayout.RIGHT);
J.add(west,BorderLayout.WEST);
J.add(south,BorderLayout.SOUTH);
J.add(north,BorderLayout.NORTH);
J.add(居中);
J.add(button6);
this.setLayout(new Flowayout(Flowayout.RIGHT));
}
}
3.GridLayout布局管理器
GridLayout布局管理器将整个容器划分成N行M列的网格,平均占据容器的空间。布局时.按照组件加人的顺序优先考虑按行布局,当一行布 局满之后再布局下行(每行只能布局M个组件)。只有当行列不能满足指定的数值(N* M小组件个数)时,才按行扩展。
构造方法:
(1)GridLayout():无参数的构造方法,创建个一行内放置所有组件的网格布局管理器对象,组件之间没有间隙。
(2)GridI ayout( int rows,int cols):这个构造方法将创建一个 rows行、cols列的网格布局管理器对象,组件之间没有间隙。
(3))GridLayout(int rows,int cols,int hgap,int vgap):创建一个rows行、cols列的网格布局管理器对象,组件之间的水平距离为hgap,垂直间距为vgap。
public class TestGrid {
public static void main(String[] args) {
JFrame j=new JFrame();
j.setVisible(true);
j.setBounds(100, 100, 700, 500);
j.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
j.setLayout(new GridLayout(3,2));
JButton button1=new JButton("button1");
button1.setSize(50,50);
JButton button2=new JButton("button2");
JButton button3=new JButton("button3");
JButton button4=new JButton("button4");
JButton button5=new JButton("button5");
JButton button6=new JButton("button6");
J.add(button1);
J.add(button2);
J.add(button3);
J.add(button4);
J.add(button5);
//J.add(button6);
j.pack();
}
}