GUI布局的小总结

1、设置布局器为FlowLayout,   顺序布局器

   组件1 组件二 组件三
 容器上的组件水平摆放 ,加入到容器即可,无需单独指定大小和位置

package gui;

import javax.swing.JButton;
import javax.swing.JFrame;

public class TestGUI {
	public static void main(String[] args) {

		JFrame f = new JFrame("MyHome");
		f.setSize(400, 300);
		f.setLocation(200, 200);
		// 设置布局器为null,即进行绝对定位,容器上的组件都需要指定位置和大小
		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);
		// b4没有指定位置和大小,不会出现在容器上
		f.add(b4);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	}
}
2.设置布局器为BorderLayout

容器上的组件按照上北 下南 左西 右东 中的顺序摆放

       
         
西    
         
       

package gui;
 
import java.awt.BorderLayout;
import java.awt.FlowLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class TestGUI {
    public static void main(String[] args) {
 
        JFrame f = new JFrame("方向");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        // 设置布局器为BorderLayerout
        // 容器上的组件按照上北下南左西右东中的顺序摆放
        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);
    }
}
上述代码JButton的大小是BorderLayout布局自动生成的,如果你要自己设置大小,可以自己结合自生需要进行设置,秩序唉一个setBoubds()即可; 

GridLayout,即网格布局器

package gui;

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class TestGUI {
	public static void main(String[] args) {

		JFrame f = new JFrame("MYBumber");
		f.setSize(400, 300);
		f.setLocation(200, 200);
		// 设置布局器为GridLayerout,即网格布局器
		// 该GridLayerout的构造方法表示该网格是2行3列
		f.setLayout(new GridLayout(2, 3));

		JButton b1 = new JButton("one");
		JButton b2 = new JButton("two");
		JButton b3 = new JButton("three");
		JButton b4 = new JButton("four");
		JButton b5 = new JButton("five");

		f.add(b1);
		f.add(b2);
		f.add(b3);
		f.add(b4);
		f.add(b5);

		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		f.setVisible(true);
	}
}
3.setPreferredSize
即便 使用 布局器 ,也可以 通过setPreferredSize,向布局器建议该组件显示的大小.
 只对部分布局器起作用,比如FlowLayout可以起作用。 比如GridLayout就不起作用,因为网格布局器必须对齐
package gui;

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class TestGUI {
	public static void main(String[] args) {

		JFrame f = new JFrame("MYbumber");
		f.setSize(400, 300);
		f.setLocation(200, 200);
		f.setLayout(new FlowLayout());

		JButton b1 = new JButton("one");
		JButton b2 = new JButton("two");
		JButton b3 = new JButton("Three");

		// 即便 使用 布局器 ,也可以 通过setPreferredSize,向布局器建议该组件显示的大小
		b3.setPreferredSize(new Dimension(180, 40));

		f.add(b1);
		f.add(b2);
		f.add(b3);

		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		f.setVisible(true);
	}
} 
注: 1.setPreferredSize需要在使用布局管理器的时候使用,布局管理器会获取空间的preferredsize,因而可以生效。 例如borderlayout在north中放入一个panel,panel的高度可以通过这样实现:panel.setPreferredSize(new Dimension(0, 100));这样就设置了一个高度为100的panel,宽度随窗口变化。

2.setSize,setLocation,setBounds方法需要在不使用布局管理器的时候使用,也就是setLayout(null)的时候可以使用这三个方法控制布局。

今天就到这里了,见下期总结


猜你喜欢

转载自blog.csdn.net/However_day/article/details/80585687