编程javajava 窗口布局器 定位
nodaoli布局器是用在容器上的。 用来决定容器上的组件摆放的位置和大小
绝对定位 null
绝对定位,就是把组件放在容器上,不考虑容器的布局器,不使用布局器,组件的摆放位置和大小都是自己设置的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import javax.swing.JButton; import javax.swing.JFrame;
public class 绝对定位null { public static void main(String[] args) {
JFrame f = new JFrame("这是绝对定位窗口"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); JButton b1 = new JButton("按钮1"); b1.setBounds(50, 50, 80, 30); JButton b2 = new JButton("按钮2"); b2.setBounds(150, 50, 80, 30); JButton b3 = new JButton("按钮3"); b3.setBounds(250, 50, 80, 30); JButton b4 = new JButton("按钮4");
f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); } }
|
FlowLayout
设置布局器为FlowLayout,顺序布局器
容器上的组件水平摆放
加入到容器即可,无需单独指定大小和位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import javax.swing.*; import java.awt.*;
public class 顺序布局器FlowLayout { public static void main(String[] args) { JFrame f = new JFrame("这是顺序布局器"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new FlowLayout());
JButton b1 = new JButton("按钮1"); JButton b2 = new JButton("按钮2"); JButton b3 = new JButton("按钮3");
f.add(b1); f.add(b2); f.add(b3);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); } }
|
边界布局 BorderLayout
设置布局器为BorderLayout
容器上的组件按照上北
下南
左西
右东
中
的顺序摆放
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import javax.swing.*; import java.awt.*;
public class 边界布局BorderLayout { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new BorderLayout());
JButton b1 = new JButton("洪七"); JButton b2 = new JButton("段智兴"); JButton b3 = new JButton("欧阳锋"); JButton b4 = new JButton("黄药师"); JButton b5 = new JButton("周伯通");
f.add(b1, BorderLayout.NORTH); f.add(b2, BorderLayout.SOUTH); f.add(b3, BorderLayout.WEST); f.add(b4, BorderLayout.EAST); f.add(b5, BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); } }
|
网格布局器 GridLayout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import javax.swing.*; import java.awt.*;
public class 网格布局GridLayout { public static void main(String[] args) {
JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(new GridLayout(2, 3));
JButton b1 = new JButton("洪七"); JButton b2 = new JButton("段智兴"); JButton b3 = new JButton("欧阳锋"); JButton b4 = new JButton("黄药师"); JButton b5 = new JButton("周伯通");
f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true); } }
|
setPreferredSize
即便使用布局器 ,也可以 通过setPreferredSize
,向布局器建议该组件显示的大小.
只对部分布局器起作用,比如FlowLayout
可以起作用。 比如GridLayout
就不起作用,因为网格布局器必须对齐