实现下图的布局:
package First;
import java.awt.*;
import javax.swing.*;
public class _4_布局管理器中的面板使用 {
public static void main(String[] args) {
JFrame jf = new JFrame() ;
jf.setLocation(300, 300);
jf.setSize(600, 600);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setTitle("GridLayout");
JButton btn1 = new JButton("btn1") ;
JButton btn2 = new JButton("btn2") ;
JButton btn3 = new JButton("btn3") ;
JButton btn4 = new JButton("btn4") ;
JButton btn5 = new JButton("btn5") ;
//创建网格式布局管理器
jf.setLayout(new GridLayout(1,2));
//创建面板
JPanel jp1 = new JPanel() ;
JPanel jp2 = new JPanel() ;
//把面板添加到窗体上
jf.add(jp1);
jf.add(jp2);
//设置面板1 的布局
jp1.setLayout(new BorderLayout());
//为什么不设置面板2的布局 呢,因为面板本身就是流式的(默认是流式的)
//把组件添加到面板上
jp1.add(btn1,"North");
jp1.add(btn2,"Center");
jp2.add(btn3);
jp2.add(btn4);
jf.setVisible(true);
}
}
说明
因为上面的布局使用上一个博客讲的三种布局管理器来实现是不能够完全实现上图中的布局,所以需要分块,分成两个面板,每一个面板为一个整体,设置成面板后,再将面板中的格式进行设置即可。
对于上面的而代码,一般写在一个类里面,不过这个类一定要继承JFrame类
package First;
import java.awt.*;
import javax.swing.*;
public class _5_布局管理器中的面板使用2 {
public static void main(String[] args) {
MyFrame m = new MyFrame("我写的");
m.mySet();
}
}
class MyFrame extends JFrame{
JPanel jp1,jp2; //面板
JButton btn1,btn2,btn3,btn4; //按钮
public MyFrame(String s) {
super(s);
}
public void mySet(){
//创建具体的组件
//创建面板
jp1 = new JPanel() ;
jp2 = new JPanel() ;
//创建一个命令按钮
btn1 = new JButton("btn1") ;
btn2 = new JButton("btn2") ;
btn3 = new JButton("btn3") ;
btn4 = new JButton("btn4") ;
//设置布局管理器
this.setLayout(new GridLayout(1,2));//代表当前对象
//设置面板1 的布局
jp1.setLayout(new BorderLayout());
//先把面板添加到窗体上再把组件添加到面板上可以,反过来也可以
//把组件添加到面板上
jp1.add(btn1,"North");
jp1.add(btn2,"Center");
jp2.add(btn3);
jp2.add(btn4);
//把面板添加到窗体上
this.add(jp1);
this.add(jp2);
//窗体的属性设置(前两个参数时位置,后两个参数是大小)
this.setBounds(300, 300, 300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
说明:
先把面板添加到窗体上再把组件添加到面板上可以,也可以先把组件添加到面板上,再把面板添加到窗体上,这都是可以的。