java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位

CardLayout局管理器以时间而非空间来管理它里面的组件,它将加入容器的所有组件 叠卡片,每次只有最上面的那个Component才可见。就好像一副扑克牌,它们叠在一起,每次只有最上面的才可见。

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.List; /**

  • @ClassName CardLayoutTest
  • @projectName: object1
  • @author: Zhangmingda
  • @description: XXX
  • date: 2021/4/29.
    */
    public class CardLayoutTest {
    public static void main(String[] args) {
    /
    * 窗口
    */
    Frame frame = new Frame(“CardLayout”);
    /

    * 上半部分
    */
    Panel panel = new Panel();
    CardLayout cardLayout = new CardLayout();
    panel.setLayout(cardLayout); //设置容器布局
    List<String> list = Arrays.asList(“第一张”,“第二张”,“第三张”,“第四张”,“第五张”);
    list.forEach(string -> {
    Button button = new Button(string);
    panel.add(button); //添加按钮
    cardLayout.addLayoutComponent(button,string); // cardLayout.show 展示时,需要提前设置button和名称的对应关系
    }); /
    * 下部分
    /
    Panel bottomPanel = new Panel();
    List<String> btnNames = Arrays.asList(“第一张”,“上一张”,“第三张”,“下一张”,“最后一张”);
    ActionListener onBottomButtonClick = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent actionEvent) {
    switch (actionEvent.getActionCommand()){
    case “第一张”:
    cardLayout.first(panel);
    break;
    case “上一张”:
    cardLayout.previous(panel);
    break;
    case “下一张”:
    cardLayout.next(panel);
    break;
    case “最后一张”:
    cardLayout.last(panel);
    break;
    case “第三张”:
    cardLayout.show(panel,“第三张”);
    }
    }
    };
    for (String string : btnNames){
    Button button = new Button(string);
    button.addActionListener(onBottomButtonClick);
    bottomPanel.add(button);
    } frame.add(panel); //添加堆叠卡片容器
    frame.add(bottomPanel,BorderLayout.SOUTH); //添加下面按钮容器,同时设置边界样式
    frame.pack(); //自调节窗口大小到最优
    frame.setLocation(400,200); //窗口相对于屏幕左上角绝对位置
    frame.setVisible(true); //显示窗口
    // panel.add();
    }
    }

5、BoxLayout布局管理器

BoxLayout可以在垂直和水平两个方向上摆放GUI组件

import javax.swing.;
import java.awt.*; /

  • @ClassName BoxLayoutTest
  • @projectName: object1
  • @author: Zhangmingda
  • @description: XXX
  • date: 2021/4/30.
    /
    public class BoxLayoutTest {
    public static void main(String[] args) {
    Frame frame = new Frame(“Box容器”);
    //创建一个水平方向的BOX容器
    Box horizontal = Box.createHorizontalBox();
    horizontal.add(new Button(“水平1”));
    horizontal.add(Box.createHorizontalGlue()); //水平间隙
    horizontal.add(new Button(“水平2”));
    horizontal.add(Box.createHorizontalStrut(10));
    horizontal.add(new Button(“水平3”));
    frame.add(horizontal,BorderLayout.NORTH); //创建一个垂直方向的Box容器
    Box vertical = Box.createVerticalBox();
    vertical.add(new Button(“垂直1”));
    vertical.add(Box.createVerticalGlue());//垂直间隙
    vertical.add(new Button(“垂直2”));
    vertical.add(Box.createVerticalStrut(10)); //固定垂直间隙
    vertical.add(new Button(“垂直3”));
    frame.add(vertical);
    frame.setLocation(400, 200);
    frame.pack(); //自动配置最优大小
    frame.setVisible(true);
    }
    }
  • 6、绝对定位frame.setLayout(null);

    import java.awt.;
    /**
  • @ClassName NullLayoutTest
  • @projectName: object1
  • @author: Zhangmingda
  • @description: XXX
  • date: 2021/4/29.
    */
    public class NullLayoutTest {
    public static void main(String[] args) {
    Frame frame = new Frame(“绝对定位”);
    Button button = new Button(“first button”);
    button.setBounds(20,30,90,30);
    Button button1 = new Button(“second button”);
    button1.setBounds(100,100,90,30); frame.setLayout(null); //绝对定位要清除默认布局BorderLayout
    frame.add(button);frame.add(button1);
    frame.setBounds(400,200,400,400);
    frame.setVisible(true);
    }
    }