java的swing布局(一)绝对布局
date: 2019-10-29 21:47:10
这几天学Java的swing编程,对关于swing的几个较为常用的布局进行讨论
先是第一个绝对布局,在看代码之前先要知道setbounds(x,y,width,height)的定义。在四个参数中:x,y是部件开始位置,width,height是部件的宽和高,再看代码:
import java.awt.*;
import javax.swing.*;
public class Pig extends JFrame{
public void create(String title) {
JFrame jf=new JFrame();
Container c=jf.getContentPane();
JPanel p1=new JPanel();
p1.setLayout(null); //这里必须设置setlayout布局为null,不然会被编译器自动赋为Flowlayout(流布局),而不是绝对布局。
JLabel jLabel1=new JLabel("员工编号:");
jLabel1.setBounds(0,0,60,40); //横向从0开始,纵向从0开始,设置宽为60,高为40
JTextField jT1=new JTextField();
jT1.setBounds(60, 0,180,40); //横向跟着第一个的后面(60),纵向还是从0开始,设置宽为180,高为40
JLabel jLabel2=new JLabel("借用器具:");
jLabel2.setBounds(260,0,60,40);
JTextField jT2=new JTextField();
jT2.setBounds(320, 0,180,40);
JLabel jLabel3=new JLabel("借用日期:");
jLabel3.setBounds(0,40,60,40); //横向从0开始,纵向从40开始(第二行,因为第一行高度是40),设置宽为60,高为40
JTextField jT3=new JTextField();
jT3.setBounds(60, 40,180,40);
JLabel jLabel4=new JLabel("归还日期:");
jLabel4.setBounds(260,40,60,40);
JTextField jT4=new JTextField();
jT4.setBounds(320, 40,180,40);
JLabel jLabel5=new JLabel("借用原因:");
jLabel5.setBounds(0,80,60,40);
JTextField jT5=new JTextField();
jT5.setBounds(60, 80,440,40);
JButton jb1=new JButton("确定");
jb1.setBounds(0,120,250,40); //横向从0开始,纵向从120开始(第四行,因为每一行高度是40),设置宽为250,高为40
JButton jb2=new JButton("取消");
jb2.setBounds(250,120,250,40);
p1.add(jLabel1);
p1.add(jT1);
p1.add(jLabel2);
p1.add(jT2);
p1.add(jLabel3);
p1.add(jT3);
p1.add(jLabel4);
p1.add(jT4);
p1.add(jLabel5);
p1.add(jT5);
p1.add(jb1);
p1.add(jb2);
c.add(p1);
jf.setTitle(title);
jf.setBounds(200, 200, 500, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Pig().create("绝对布局");
}
}
运行结果如下:
绝对布局是最简单的,只要知道部件的setbounds(x,y,width,height),一切就显得很简单,