您的位置:首页 > 编程语言 > Java开发

JAVA学习日记每天进步一点点之Swing 布局管理及面板

2019-04-10 10:35 405 查看

参考 zyj0813 的布局管理的文章

布局管理的代码思路

布局管理主要有边界布局,流布局还有网格布局,编程的思路大体相似:

  1. 继承JFrame类,所有的组件布局都是在JFrame窗体的基础上进行的
  2. 定义组件:可以在类里面,也可以在构造方法内
  3. 添加组件:将组件添加到JFrame容器中去,利用This函数this.add()
  4. 布局管理操作:可能和添加组件同时进行,或者单独设置如this.setLayout(new FlowLayout())
  5. 窗体设置:标题、大小、坐标、开关、可视化
    具体代码如下所示:
    边界布局管理
public MyBorderLayout() {
JButton jb1=new JButton("按钮1");
JButton jb2=new JButton("按钮2");
JButton jb3=new JButton("按钮3");
this.add(jb1, BorderLayout.CENTER);
this.add(jb2, BorderLayout.EAST);
this.add(jb3, BorderLayout.SOUTH);
// 窗体设置的部分
this.setTitle("边界布局管理");
this.setBounds(0, 0, 200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

流布局管理

public MyFlowLayout() {
for(int i=1;i<10;i++) {
this.add(new JButton("jb"+i));
}
this.setLayout(new FlowLayout(FlowLayout.LEFT));//
this.setTitle("流布局管理");
this.setSize(500, 500);
this.setLocation(0,0);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

网格布局管理:

int size = 9;
JButton jb[] = new JButton[size];//定义按钮的数组
for(int i=0;i<9;i++) {
jb[i]=new JButton("按钮"+i);//初始化按钮操作
}
for(int i=0;i<9;i++) {
this.add(jb[i]);
}
this.setLayout(new GridLayout(3, 3, 20, 20));
this.setTitle("网格布局管理");
this.setSize(500, 500);
this.setLocation(0,0);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

面板的代码思路

首先,面板也是一种容器,可以装一些组件来布局,但是它必须要被添加到其他的容器中去。相当于在原有的布局管理操作之后,对原来的布局用面板来细分,被用于复杂的布局管理。我们对上面的布局管理的思路做修改:

  1. 继承JFrame类,所有的组件布局都是在JFrame窗体的基础上进行的
  2. 定义组件、定义面板
  3. 添加组件:将组件添加到面板里,JButton
  4. 添加面板:将面板添加到JFrame容器中去,JPanel,相当于将面板中的组件打包成一个整体,在面板里面默认为流布局,如果改用其它的布局方式在初始化面板的时候需要加出来,如JPnel a=new JPnel(new GridLayout()),意思为面板a内部采用的是网格布局
  5. 布局管理操作:这里的操作是把面板当作组件来布局。
  6. 窗体设置:标题、大小、坐标、开关、可视化
    在之前的网格布局管理里面添加面板组件,代码如下:
int size = 9;
JButton jb[] = new JButton[size];//定义大小为size的按钮数组
for(int i=0;i<9;i++) {
jb[i]=new JButton("按钮"+i);//初始化按钮操作
}
JPanel jp1=new JPanel();//初始化面板,默认流布局
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
for(int i=0;i<3;i++) {
jp1.add(jb[i]);    //将按钮0-3添加到面板中
}
for(int i=3;i<6;i++) {
jp2.add(jb[i]);
}
for(int i=6;i<9;i++) {
jp3.add(jb[i]);
}
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.setLayout(new GridLayout(1, 3, 20, 20));//对面板做网格布局管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: