练习一、flowlayout布局(JPanel的默认布局就是流式布局)
FlowLayout:流式布局(顺着放下来)比如按钮一个接一个的放在面板上,当然是居中显示,一行放满了放到下一行
package org.zhaiyujia.test1;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GuiTest1 extends JFrame {
JButton b1,b2,b3,b4,b5;
JPanel p;
public GuiTest1() {
//FlowLayout:流式布局(顺着放下来)比如按钮一个接一个的放在面板上,当然是居中显示,一行放满了放到下一行
b1=new JButton("Button1");
b2=new JButton("Button2");
b3=new JButton("Button3");
b4=new JButton("Button4");
b5=new JButton("Button5");
p=new JPanel();
this.getContentPane().add(p);//获取窗口对象的内容面板对象,再添加p
FlowLayout layout=new FlowLayout();
p.setLayout(layout);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GuiTest1();
}
}
练习二、GridLayout:网格布局,几行几列的模式
构造方法:GridLayout(int rows, int cols) :创建具有指定行数和列数的网格布局。
package org.zhaiyujia.test1;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GuiTest1 extends JFrame {
JButton b1,b2,b3,b4,b5;
JPanel p;
public GuiTest1() {
//FlowLayout:流式布局(顺着放下来)比如按钮一个接一个的放在面板上,当然是居中显示,一行放满了放到下一行
b1=new JButton("Button1");
b2=new JButton("Button2");
b3=new JButton("Button3");
b4=new JButton("Button4");
b5=new JButton("Button5");
p=new JPanel();
this.getContentPane().add(p);//获取窗口对象的内容面板对象,再添加p
//FlowLayout layout=new FlowLayout();
//p.setLayout(layout);
//GridLayout:网格布局
GridLayout layout=new GridLayout(2,3);//两行三列
p.setLayout(layout);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GuiTest1();
}
}
练习三、如何让按钮不充满整个网格空间
setHgap(int hgap) :将组件之间的水平间距设置为指定的值。
setVgap(int vgap) :将组件之间的垂直间距设置为指定值。
package org.zhaiyujia.test1;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GuiTest1 extends JFrame {
JButton b1,b2,b3,b4,b5;
JPanel p;
public GuiTest1() {
//FlowLayout:流式布局(顺着放下来)比如按钮一个接一个的放在面板上,当然是居中显示,一行放满了放到下一行
b1=new JButton("Button1");
b2=new JButton("Button2");
b3=new JButton("Button3");
b4=new JButton("Button4");
b5=new JButton("Button5");
p=new JPanel();
this.getContentPane().add(p);//获取窗口对象的内容面板对象,再添加p
//FlowLayout layout=new FlowLayout();
//p.setLayout(layout);
//GridLayout:网格布局
GridLayout layout=new GridLayout(2,3);//两行三列
p.setLayout(layout);
layout.setHgap(10);
layout.setVgap(10);
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new GuiTest1();
}
}
为了更美观,我们可以在面板上叠加面板,就比如第一个面板设置一种布局,比如说两行三列的面板布局,每一个单元格我都放一个面板,然后再在这个子面板上继续设置布局放其他组件。
【java如何设置布局】1.得到布局类的对象2.通过调用容器类的组件setlayout方法将布局对象绑定到这个容器组件3.最后,添加组件即可