GUI之GridLayout基本用法_feng_zhiyu的博客-程序员秘密

技术标签: Java  GUI  

import java.awt.*;

class Layout extends Frame {
    
    public Layout(String title) {
        GridBagLayout layout = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();
        this.setLayout(layout);
        c.fill = GridBagConstraints.BOTH; // /设置组件横向纵向可以拉伸
        c.weightx = 1; // /设置横向权重为1   
        c.weighty = 1; // /设置纵向权重为1   这两条设置的是当前行
        this.addComponent("bt1", layout, c);
        this.addComponent("bt2", layout, c);
        this.addComponent("bt3", layout, c);
        c.gridwidth = GridBagConstraints.REMAINDER; // /添加的组件bt4是本行的最后一个组件
        this.addComponent("bt4", layout, c);
        c.weightx = 0; // /设置横向权重为0
        c.weighty = 0; // /设置纵向权重为0  权重即为组件占领容器中多余的水平方向和垂直方向的空白区域
        addComponent("bt5", layout, c);
        c.gridwidth = 1; // /设置组件bt6跨一个网格(默认值)
        this.addComponent("bt6", layout, c);
        c.gridwidth = GridBagConstraints.REMAINDER; // /添加的组件bt7是本行最后一个组件
        this.addComponent("bt7", layout, c);
        c.gridheight = 2;
        c.gridwidth = 1;
        c.weightx = 2;
        c.weighty = 2;     ///以上四条设置的是bt8在容器中的大小
        this.addComponent("bt8", layout, c);
        c.gridwidth = GridBagConstraints.REMAINDER;
        c.gridheight = 1; ///这里设置的是bt9和bt10两个组件的纵向跨越一个网格
        this.addComponent("bt9", layout, c);
        this.addComponent("bt10", layout, c);
        this.pack();///根据窗口里面的布局及组件的preferedSize来确定frame的最佳大小。
        this.setVisible(true);
    }

    // /添加组件的方法
    private void addComponent(String name, GridBagLayout layout,
            GridBagConstraints c) {
        Button bt = new Button(name); // /创建一个名为name的按钮
        layout.setConstraints(bt, c); // /设置GridBagConstraints的对象和按钮的关联
        this.add(bt); // /增加按钮
    }
}

public class Demo {
    
    public static void main(String[] args) {
        new Layout("GridBagLayout");
    }
}

生成的窗口如下:
这里写图片描述

GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。例如,下面是一个将六个按钮布置到三行两列中的 applet:

 import java.awt.*;
 import java.applet.Applet;
 public class ButtonGrid extends Applet {
    
     public void init() {
         setLayout(new GridLayout(3,2));
         add(new Button("1"));
         add(new Button("2"));
         add(new Button("3"));
         add(new Button("4"));
         add(new Button("5"));
         add(new Button("6"));
     }
 }

参考:
Java基础入门 清华出版 chapter 9
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
https://blog.csdn.net/dongdongsdo0310/article/details/6638903

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/feng_zhiyu/article/details/79984041

智能推荐

第五单元 分治算法 5.1 一元三次方程求解5.2 快速幂 5.3 排序_一起摸摸鱼的博客-程序员秘密

第五单元 分治算法5.1 一元三次方程求解【问题描述】有形如 ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100 至 100 之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 4 位。【分析】记方程为 f(x)=0,若存在 2 个数 x1和 x2,且 x1<x2,f(x1)·f(x2)<0,则在(x1,x2)之间一定有一个根。

攻防世界web新手之buckup_buckctf web12web_彬彬逊的博客-程序员秘密

攻防世界web新手之buckup打开题目连接,发现提示信息“index.php的备份文件名”百度后可得知,一些编辑器再编辑后会生产一个 .bak后缀的文件,用于紧急恢复例如:index.php→ index.php.bak不同的编译器可能会有不同的后缀同样也有可能是编写者主动备份例如:index.php→ index.oldindex.php→ index.php.temp...

March C算法_Ronnie_Hu的博客-程序员秘密

March C算法是目前应用最为广泛的MBIST(Memory Built-In-Self-Test,存储器内建自测试)算法。

QActin例子说明_metasearch的博客-程序员秘密

Walkthrough: A Simple Application withActionsWhile reading through the implementation of the ApplicationWindow constructor you have maybe askedyourself: "The fileOpen tool-button in the toolbar

RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与FreeRTOS的比较)_m0_67265464的博客-程序员秘密

前2课讲完了RT-Thread开发环境,启动流程,启动以后当然是开始跑线程了,那么自然我们得学会如何创建线程以及线程的有关操作。目录前言一、RT-Thread线程操作函数1.1 动态创建线程1.2 静态创建线程1.3 启动线程线程创建的一个细节—创建和初始化?句柄是什么?1.4 删除线程和脱离线程1.5 挂起和恢复线程1.6 其他线程辅助函数1.6.1 获得当前线程1.6.2 让出处理器资源1.6.3 线程睡眠(延时函数)1.6.4 线程控制函数1.6.

随便推点

三维空间中创建label标签(three.js实战7)_three.js label_点燃火柴的博客-程序员秘密

使用CSS2DRenderer创建文字说明标签1. demo效果2. CSS2DRenderer使用流程2.1 相关文件引入2.2 创建CSS2DRenderer渲染器2.3 创建ShaderMaterial材质2.4 使用BufferGeometry实例和ShaderMaterial材质创建网格对象3. demo代码1. demo效果如上图,demo中使用CSS2DRenderer创建label,在物体运动中始终保持面向相机,缩放中也正常显示2. CSS2DRenderer使用流程2.1 相关

最新版tensorflow1.12-gpu安装详细避坑(windows10 64位+anaconda+cuda+cudnn+pycharm环境配置)_tensorflow1.12 gpu_渡水葫芦喵的博客-程序员秘密

放假回家,在老笔记本(老爷显卡)上捣腾上了最新的1.12版TensorFlow-gpu。具体配置如下: windows10 64位,nvidia GT 745M; anaconda3-5.2.0(内置python3.6); cuda9.0.176,cudnn v7.1; pycharm社区版。 也参考...

Objective-C 语法之词典对象(NSDictionary/NSMutableDictionary)_trandy的博客-程序员秘密

做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objective-C语言中 词典对象就是做这个事情的,不过在同一个词典对象中可以保存多个不同类型的数据,不像Java与C 只能保存声明的相同类型的数据,它的关键字为NSDictionary与NSMutableDictionary。阅

Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现_unity vr按钮_仙魁XAN的博客-程序员秘密

Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现目录Unity 工具类 之 AR/VR Gaze 凝视/按键/鼠标 点击 UI/游戏物体 的交互方式实现一、简单介绍二、实现原理三、注意事项四、效果预览五、实现步骤六、关键代码七、参考工程一、简单介绍在Unity 的VR/AR开发中,一些工具类的整理,方便后期使用。在AR/VR 中,一般都会用到凝视交互,本节介绍,在 Unity ...

Linux文件系统基本权限和高级权限管理_unix 4755_Shmily_xt的博客-程序员秘密

目录一、权限对于文件来说常见几种文件权限组成八进制数字表示权限二、文件的特殊权限文件的特殊权限:suid sgid sticky文件拓展权限ACL从REHL6 开始,新增加文件系统扩展属性:命令:chattr参数:a只能追加内容;i不能被修改+a: 只能追加内容如: echo aaa>> hack.sh+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目...

基于Vue+Nodejs+MongoDB超市后台商品订单管理系统_mongdb实现商品管理_计算机源码设计案例的博客-程序员秘密

开发软件: WebStorm 开发环境:Nodejs + vue + express + mongodb数据库 + mysql数据库主要技术栈:Vue,Element-UI,Node,Express,Axios目录介绍:client 目录是用Vue、Element-UI、Axios写的客户端,主要是把server发来的数据展示到界面server 目录是用Node、Express写的服务端,主要负责处理客户端发来的业务请求vue-api-server 目录是本项目用到的课程上的服务端api接口.里面

推荐文章

热门文章

相关标签