【Java AWT 图形界面编程】Frame 窗口中进行自定义布局 ( AWT 中常用的布局容器 )

news2024/12/22 15:22:03

文章目录

  • 一、Frame 窗口中进行自定义布局
  • 二、AWT 中常用的布局容器





一、Frame 窗口中进行自定义布局



在 【Java AWT 图形界面编程】LayoutManager 布局管理器总结 ( FlowLayout 布局 | BorderLayout 布局 | BoxLayout 布局 ) 介绍了常用的布局 ;

使用布局的好处是 布局内的子组件 可以随着窗口大小的改变 , 而进行 自适应改变 ;

如果要实现复杂界面的布局 , 要求 各种组件精准的进行排序 , 此时就需要 自己来控制组件的绘制 ;


Frame 窗口的默认布局管理器是 BorderLayout 布局管理器 , 如果要自己控制窗口中组件的绘制 , 先取 消该 布局管理器 , 调用

frame.setLayout(null);

代码 , 即可取消该布局管理器 ;


取消布局管理器后 , 每个布局组件的绘制位置以及组件大小 , 都需要自己进行绘制 ;


如 : 在窗口中设置 5 个布局, 分别在 4 个角和 中心位置显示 , 每个布局显示不同的颜色 ;

代码示例 :

import java.awt.*;

public class HelloAWT {
    public static void main(String[] args) throws InterruptedException {
        // Frame 默认的布局管理器就是 BorderLayout
        Frame frame = new Frame("AWT 界面编程");
        // 如果想要自己控制布局, 则取消 Frame 窗口的布局管理器
        frame.setLayout(null);

        // 自动设置 Frame 窗口合适的大小
        frame.setBounds(0, 0, 300, 300);

        // 设置 5 个布局, 分别在 4 个角和 中心位置显示

        // 绘制左上角布局
        Panel panel1 = new Panel();
        panel1.setBackground(Color.BLUE);
        panel1.setBounds(0, 0, 100, 100);
        frame.add(panel1);

        // 绘制右上角布局
        Panel panel2 = new Panel();
        panel2.setBackground(Color.RED);
        panel2.setBounds(200, 0, 100, 100);
        frame.add(panel2);

        // 绘制左下角布局
        Panel panel3 = new Panel();
        panel3.setBackground(Color.BLACK);
        panel3.setBounds(0, 200, 100, 100);
        frame.add(panel3);

        // 绘制右下角布局
        Panel panel4 = new Panel();
        panel4.setBackground(Color.GREEN);
        panel4.setBounds(200, 200, 100, 100);
        frame.add(panel4);

        // 绘制中间布局
        Panel panel5 = new Panel();
        panel5.setBackground(Color.MAGENTA);
        panel5.setBounds(100, 100, 100, 100);
        frame.add(panel5);

        frame.setVisible(true);
    }
}

运行结果 :

在这里插入图片描述





二、AWT 中常用的布局容器



在 AWT 图形界面编程 中 , 最常见的 三种 Container 容器就是 Frame , Dialog , Panel ;

Dialog 是对话框 , 只有使用对话框时 , 才弹出该界面 ;

Frame 和 Panel 是窗口界面的重要组成部分 , Frame 是窗口本体 , 在窗口中如果要进行 多个容器布局 , 就需要使用 Panel 容器 , 设置 Panel 容器的显示位置 , 布局管理器 , 子组件 可以构建一个包含多个组件的布局容器 ;

Frame 窗口中可以添加多个 Panel 容器布局 ;


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/185960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器数据恢复】ZFS文件系统下RAIDZ的数据恢复案例

服务器数据恢复环境: ORACLE Sun ZFS Storage; 32块磁盘分为4组,每组8块硬盘,热备盘全部启用。 ZFS文件系统,Windows操作系统。 服务器故障&分析: 设备在正常工作时候突然崩溃,经过检查排除…

机器学习笔记之深度玻尔兹曼机(三)预训练思路整理

机器学习笔记之深度玻尔兹曼机——预训练思路整理引言回顾:受限玻尔兹曼机的叠加逻辑回顾:受限玻尔兹曼机叠加过程中的计算方式关于计算过程的优化引言 上一节介绍了受限玻尔兹曼机叠加的逻辑,以及叠加过程中出现的Double Counting\text{Dou…

理解 TypeScript 背后的结构化类型系统

前言 你能说清楚类型、类型系统、类型检查这三个的区别吗?在理解TypeScript的结构化类型系统之前,我们首先要搞清楚这三个概念和它们之间的关系 类型:即对变量的访问限制与赋值限制。如 TypeScript 中的原始类型、对象类型、函数类型和字面…

python代码实现批量yunfile文件下载

建议下载文件大小不要超过1M吧,超过的话,把等待下载时间加大点 —>说明: 使用python2.7+selenium+chrome v49+百度ocr识别,基本上pip install 相关的程序,源码就可以直接运行了,exe文件也编译了,去别的电脑运行感觉有各种问题,大家自己用源码跑吧,最新chrome版本的…

如何实现报表集成?(一)

报表需求在每个企业都是“刚需”,而报表的应用又是其中的关键之一,并不是说报表开发出来就万事大吉了,怎么用、怎么用得好,也是用户非常关注的。在这个话题中,报表的集成是个绕不过去的坎,如何通过集成&…

机器学习之参数学习

下述内容为课程小结 定义 参数估计的方法包括经验风险最小化、结构风险最小化、最大似然估计、最大后验估计。 参数估计用于学习模型参数,以达到最优的目的,如线性回归的模型参数 经验风险最小化 对于输入的待处理数据格式为(x,y){(x&…

Plant Simulation热力图工具V2.1全新发布

在做AGV路径规划或人员路径规划时,如果配套热力图,是可以非常方便的分析出相应位置的热点情况,决策人员可以更加方便的确定方案修改思路,比如下图可以非常清晰地看到AGV的停顿位置和路口的使用情况。较早之前,波哥开发…

Vue3+Vite+Element-Plus实现CRUD常见表单项目

效果有 查询,增加,表格,删除,编辑 其实CRUD,就是一个管理项目最常见的功能 C增加 (Create) R读取 (Read) U更新 (Update) D删除 (Delete) 一、创建项目 vue3用vite创建项目 1 对应路径cmd 输入 npm create vitelates…

C 语言零基础入门教程(十八)

C 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。 当我们提到输出时,这意味着要在屏幕上、打印机上或…

SSM框架整合(Spring+SpringMVC+MyBatis)

一、创建MAVEN工程 二、导入pom依赖 <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/comm…

项目错误排查

项目运行不起来&#xff0c;先观察表现&#xff0c;就像中医所讲的望。复现&#xff0c;了解触发问题的时机和过程。在哪个步骤&#xff0c;哪个接口出了问题。闻问切浏览器f12&#xff0c;根据请求参数和响应码判断问题出在前端还是后端。查看错误日志&#xff0c;一般写的还是…

LeetCode011之盛最多水的容器(相关话题:双指针,逻辑分析)

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容…

小程序 --- 收货地址 --- 定位功能

一、整体功能如下图二、功能点定位选择自己的位置手动选择省市县后输入详细地址关键词搜索地址&#xff0c;然后进行选择三、如何实现定位采用小程序API wx.chooseLocation 调出地图选择位置 API wx.chooseLocation 详细说明根据地址解析出省市县以及详细地址及经纬度代码实现c…

【Linux】-- 进程概念

目录 一、进程概念 二、PCB 1.什么是PCB 2.什么是task_struct 3.task_struct包含内容 三、task_struct内容详解 1.查看进程 &#xff08;1&#xff09;通过系统目录查看 &#xff08;2&#xff09;通过ps命令查看 &#xff08;3&#xff09;通过top命令查看 &…

Mysql自定义变量在递归遍历中的妙用

借着在解决一个递归查询父目录的问题&#xff0c;学习了一下mysql变量的用法&#xff0c;在某些场景下这种解法还是比较有特效的&#xff0c;下面具体来聊一下场景&#xff0c;同时也会详细分析下mysql自定义变量的用法 场景&#xff1a; 获取从树的根节点到叶子节点的全路径&…

图解基于UDS的Flash BootLoader

图解基于UDS的Flash BootLoader一、为什么要搞Bootloader&#xff1f;为什么要基于UDS搞Bootloader二、Bootloader应支持的UDS服务三、Bootloader——三段式(1) 预编程阶段(2) 主编程阶段(3)后编程状态四、BootLoader的启动顺序与转换流程五、问题点疑问点 Q:图中的烧写顺序是…

点云 3D 目标检测 - RangeDet(ICCV 2021)

点云 3D 目标检测 - RangeDet&#xff08;ICCV 2021&#xff09;摘要1. 引言2. 相关工作3. 距离视图表示的回顾4. 方法4.1 距离条件金字塔4.2 元核卷积4.3 加权非最大抑制4.4 距离视图中的数据增强4.5 体系结构5. 实验5.1 元核卷积的研究5.2 距离条件金字塔的研究5.3 加权非最大…

基于android的有声听书系统

需求信息&#xff1a; 1&#xff1a;注册登录&#xff1a;未注册用户首先进行账号注册&#xff0c;注册成功后进行登录&#xff0c;已注册用户直接输入账号密码进行登录&#xff0c;登录成功后进入主页面。 2&#xff1a;主页面&#xff1a;通过左右滑动可以实现对推荐界面、订…

Activity7工作流介绍_和BPM语言介绍---工作流工作笔记003

只说经典,重要的部分,节省学习时间,用最快的速度学习掌握 看一个简单审批流程,要知道工作流是基于状态驱动的,就是比如,状态有: 0 已创建 1 已提交 2 已部门经理审核 3 已总经理审核 4 审核通过 5 审核拒绝 根据这些状态来做驱动. 这里需要用到流程引擎,常见的比如有Drools规…

不看后悔,一文入门Go云原生微服务

文章目录打好基础微服务框架对比简单横评各个框架微服务概念软件架构演进史简单理解微服务的好处go-micro概述构成组件Go MicroAPISidecarWebCLIBot总结Go Micro组件架构Registry注册中心Selector负载均衡Broker事件驱动&#xff1a;发布订阅Transport消息传输总结快速入门准备…