java GUI编程之布局控制器(Layout)实例分析

作者:qq_42412646 时间:2023-11-23 13:10:35 

本文实例讲述了java GUI编程之布局控制器(Layout)。分享给大家供大家参考,具体如下:

布局控制器,是用来系统自动分配各个component在window内部是怎么排布的;默认为FlowLayout,即挨个排序。FlowLayout是Panel的

instance 1:FlowLayout


import java.awt.*;
public class TestLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("ok");
Button b2 = new Button("open");
Button b3 = new Button("change");
f.setBackground(Color.BLUE);
f.setBounds(100, 100, 300, 300);
f.setLayout(new FlowLayout());
f.setResizable(true);
f.add(b1);
f.add(b2);
f.add(b3);
f.setVisible(true);
}
}

instance 2:BorderLayout


import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame f = new Frame("Border Layout");
Button bn = new Button("Bn");
Button bs = new Button("Bs");
Button be = new Button("Be");
Button bw = new Button("Bw");
Button bc = new Button("Bc");

// f.add(bw,"West");
// f.add(be,"East");
// f.add(bn,"North");
// f.add(bs,"South");
// f.add(bc,"Center");
// f.setLayout(new BordorLayout());
f.add(bn,BorderLayout.NORTH);
f.add(bs,BorderLayout.SOUTH);
f.add(bw,BorderLayout.WEST);
f.add(be,BorderLayout.EAST);
f.add(bc,BorderLayout.CENTER);

f.setSize(200, 200);
f.setVisible(true);
}
}

BorderLayout把整个界面划分为东西南北中五个区域块;其中BorderLayout.NORTH等是int类型的数据,为一个常量。

instance 3:GridLayout


import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame f = new Frame();
Button b1 = new Button("b1");
Button b2 = new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
Button b6 = new Button("b6");
f.setLayout(new GridLayout(3,2));

f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.pack();
f.setSize(200, 200);
f.setVisible(true);
}
}

注:当调用Layout后,其内部的component的大小和位置由系统(布局管理器自主分配),而无法认为的设计。而pack()方法是用来显示各个组件的。

instance 4:综合实例


import java.awt.*;
public class TestedLayout {
public static void main(String[] args) {
Frame f = new Frame("GUI");
f.setLayout(new GridLayout(2,1));
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new BorderLayout());
Panel p11 = new Panel(new GridLayout(2,1));
Panel p22 = new Panel(new GridLayout(2,2));
Button b1 = new Button("button");
Button b2 = new Button("button");
Button b3 = new Button("button");
Button b4 = new Button("button");
Button b5 = new Button("button");
Button b6 = new Button("button");
Button b7 = new Button("button");
Button b8 = new Button("button");
Button b9 = new Button("button");
Button b10 = new Button("button");
p1.add(b1,BorderLayout.WEST);
p1.add(b2,BorderLayout.EAST);
p2.add(b3,BorderLayout.WEST);
p2.add(b4,BorderLayout.EAST);
p11.add(b5);
p11.add(b6);
p22.add(b7);
p22.add(b8);
p22.add(b9);
p22.add(b10);
p1.add(p11,BorderLayout.CENTER);
p2.add(p22,BorderLayout.CENTER);
f.add(p1);
f.add(p2);
f.setBounds(100, 100, 400, 400);
f.setVisible(true);

}
}

注:一个new等于创建了一个button对象,分配了一个内存空间。即使是完全相同的button即同样的大小名称等,其终究还是哪一个,当其被反复添加时,仅仅是相当于给其换了位置。其和变量不同,并不是单纯的复制,而是内存和对象的指向问题。

希望本文所述对大家java程序设计有所帮助。

来源:https://blog.csdn.net/qq_42412646/article/details/102168983

标签:java,GUI,布局控制器,Layout
0
投稿

猜你喜欢

  • Android Handler主线程和一般线程通信的应用分析

    2022-10-29 14:08:13
  • springboot项目中使用Swagger的简单示例

    2023-01-14 05:18:24
  • 新的Java访问mysql数据库工具类的操作代码

    2023-04-05 16:54:58
  • java数据结构与算法数组模拟队列示例详解

    2021-07-23 16:50:24
  • 举例讲解JDK注解的使用和自定义注解的方法

    2022-06-29 17:34:52
  • Android开发之ProgressBar字体随着进度条的加载而滚动

    2023-12-28 03:06:53
  • 详解Java单元测试之JUnit篇

    2023-06-12 16:42:13
  • android dialog自定义实例详解

    2022-03-15 20:29:22
  • mybatis主从表关联查询,返回对象带有集合属性解析

    2023-06-15 16:10:59
  • C#多线程处理多个队列数据的方法

    2021-12-26 19:31:02
  • android实现手机截屏并保存截图功能

    2022-07-16 01:47:46
  • 使用Java操作TensorFlow的方法

    2023-11-27 21:31:38
  • C++野指针和悬空指针的实现方法

    2022-11-02 08:26:56
  • Eclipse配置Tomcat和JDK步骤图解

    2022-11-23 11:46:54
  • 深入理解C#之枚举

    2023-01-02 14:08:33
  • Android Studio连接手机设备教程

    2021-06-10 14:40:23
  • Android相册效果(使用C#和Java分别实现)

    2022-08-21 15:19:10
  • 详解Spring boot使用Redis集群替换mybatis二级缓存

    2023-03-09 17:17:38
  • 在android中实现类似uc和墨迹天气的左右拖动效果

    2022-06-18 08:47:50
  • java项目实现统一打印入参出参等日志

    2023-05-25 18:11:06
  • asp之家 软件编程 m.aspxhome.com