【Java AWT 图形界面编程】Container 容器 ② ( Frame 窗口示例 | Panel 示例 | 窗口中文乱码处理 )

news2024/11/24 14:10:24

文章目录

  • 一、Frame 窗口示例
  • 二、Panel 示例
  • 三、窗口中文乱码处理





一、Frame 窗口示例



首先 , 创建 Frame 实例对象 , 该对象就是 操作系统中应用软件的 窗口 ;

// 1. 创建窗口
Frame frame = new Frame("AWT 图形界面编程");

Frame 是 Window 的子类 ,

public class Frame extends Window implements MenuContainer

Window 是 Container 的子类 ;

public class Window extends Container implements Accessible

然后 , 设置窗口的位置 , 这里调用 Component#setLocation 函数 设置窗口在屏幕中的位置 ;

// 2. 设置窗口位置
frame.setLocation(50, 50);

再后 , 设置窗口大小 , 这里调用 Component#setSize 函数 设置窗口的像素大小 ;

// 3. 设置窗口大小
frame.setSize(800, 500);

最后 , 设置窗口可见 , 窗口默认不可见 , 需要手动设置可见性 ;

// 4. 设置窗口可见
frame.setVisible(true);

完整代码示例 :

import java.awt.*;

public class HelloAWT {
    public static void main(String[] args) {
        // 1. 创建窗口
        Frame frame = new Frame("AWT 图形界面编程");

        // 2. 设置窗口位置
        frame.setLocation(50, 50);

        // 3. 设置窗口大小
        frame.setSize(800, 500);

        // 4. 设置窗口可见
        frame.setVisible(true);
    }
}

执行结果 : 执行后会在屏幕的 ( 100, 100 ) 位置显示该窗口 ;
在这里插入图片描述
注意 : 此时窗口无法关闭 , 需要停止程序运行来关闭窗口 ;





二、Panel 示例



Panel 不能独立存在 , 需要依附于 Window 存在 , 因此这里需要先创建 Frame 窗口 , 然后再向其中添加 Panel ;


完整代码示例 :

import java.awt.*;

public class HelloAWT {
    public static void main(String[] args) {
        // 创建窗口
        Frame frame = new Frame("AWT 图形界面编程");

        // 创建 Panel
        Panel panel = new Panel();

        // 创建 文本框
        TextField textField = new TextField("测试文本框");

        // 创建 按钮
        Button button = new Button("测试按钮");

        // 向 Panel 中添加文本框和按钮
        panel.add(textField);
        panel.add(button);

        // 将 Panel 放到 Frame 中
        frame.add(panel);

        // 设置窗口位置
        frame.setLocation(50, 50);

        // 设置窗口大小
        frame.setSize(800, 500);

        // 设置窗口可见
        frame.setVisible(true);
    }
}

执行效果 :
在这里插入图片描述





三、窗口中文乱码处理



在上面的示例中 , 创建的按钮 Button button = new Button("测试按钮"); ,

按钮文本为 " 测试按钮 " , 但是在 窗口中显示时 , 显示的乱码 :

在这里插入图片描述

这是因为 Java 程序代码的编码方式是 UTF-8 格式的编码 ,

而 Windows 系统使用的是 GBK 格式的编码 ;

点击 IntelliJ IDEA 中 执行选项 中的 " Edit Configurations… " 选项 ,

在这里插入图片描述

在 " Run/Debug Configurations " 对话框中 , 点击 " Modify options " 按钮 , 选择 " Add VM options " 选项 ,

在这里插入图片描述

此时界面中会增加一个 VM options 输入框 ,
在这里插入图片描述
在上述 VM options 输入框中 , 输入

-Dfile.encoding=gbk

内容 ,
在这里插入图片描述
应用上述选项 ;

再次执行程序 , 此时界面按钮文本显示正常 ;

在这里插入图片描述

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

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

相关文章

前端号外—2022年最受欢迎居然是它,Node.js危已

导读 | 2022年是艰难的一年,不仅有互联网的寒冬、还有新冠疫情的洗礼。但是似乎这一切都阻挡不了JavaScript的内卷,一年不长不短的时间中,JavaScript从创新、性能、功能等多维度深度进化,给前端带来了诸多惊喜。本文基于github上流…

仓库管理系统demo搭建指南

1、简介 1.1、案例简介 本文将介绍,如何搭建云进销存-仓库管理。 1.2、应用场景 云进销存-仓库管理应用分仓管理并提供灵活的库存计算方式及库存预警。 2、设置方法 2.1、表单搭建 1)新建表单【商品管理】,字段设置如下: …

TensorFlow笔记之神经网络完成多分类任务

文章目录前言一、数据集调用二、Tensorflow1.x1.单隐藏层2.模型保存与调用三、Tensorflow2.x1.全连接层类2.keras建模总结前言 对TensorFlow笔记之单神经元完成多分类任务进行修改,在tf1.x与tf2.x中使用神经网络完成手写体数字识别多分类任务。 一、数据集调用 数…

10、Javaweb_Cookkie会话Session修改IDEA代码模板

修改IDEA代码模板 选择Setting... 找到要修改的代码模板,点击ok修改即可 使用模板创建方法 ,点击文件包,右键New选择文件类型 点击ok即可 创建完成 会话技术 1. 会话:一次会话中包含多次请求和响应。 * 一次会话:浏览器第一次给服务器资…

JAVA开发(web常见安全漏洞以及修复建议)

web安全常见漏洞修复建议:SQL注入规避 代码层最佳防御sql漏洞方案:使用预编译sql语句查询和绑定变量。(1)使用预编译语句,使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询…

92、【树与二叉树】leetcode ——222. 完全二叉树的节点个数:普通二叉树求法+完全二叉树性质求法(C++版本)

题目描述 原题链接:222. 完全二叉树的节点个数 解题思路 1、普通二叉树节点个数求法 (1)迭代:层序遍历BFS 遍历一层获取一层结点 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode …

华为交换机、路由器设备批量配置端口方法步骤

华为交换机、路由器批量配置端口方法步骤 在现实工作中,如果要对多个端口做同样的配置,每个接口逐一进行相同的配置,很容易出错,而且造成大量重复工作。 配置端口组功能就可以解决这个问题啦。 你只需要将这些以太网接口加入同一…

HTML学习笔记(全)

HTML 文章目录HTML第一章——HTML 基础认识1. 1 基础补充1.1.1 网页组成1.1.2 代码如何转换成网页1.1.3 渲染引擎(了解)1.1.4 web 标准1.2 HTML 基础认知1. HTML的概念2. HTML页面固定结构3. **标签说明:**第二章——HTML基础语法2.1——注释…

国产linux操作系统——麒麟操作系统的来龙去脉

文章目录1、linux操作系统2、国产操作系统3、麒麟操作系统4、引用1、linux操作系统 目前市场主流的linux操作系统分类大致如此,国产操作系统的麒麟操作系统,底层比较杂,所以单独一类。 2、国产操作系统 排名日期截止到2022 这里提一下排名第…

科技云报道:从re:Invent 2022读懂亚马逊云科技的“生态棋局”

科技云报道原创。 懂棋的人都知道,下棋靠的是智力的角逐,也是气度的较量。 到了云计算发展的新时期,下棋的“人”已经变了,单靠一个人的智力解决不了N个用户的N种问题。 因此,近年来头部云厂商纷纷加大了对合作伙伴生…

centos7:jenkins+nodejs前端自动化部署

系统:centos7 nodejs版本:v16.18.1 npm版本:8.19.2 由于centos7最大只支持16.18.1版本,尽量让前端写代码时使用这个版本,linux系统如果要装高版本的node需要安装glibc库,很危险,尽量不要操作。 jenkin…

Hudi系列6:使用pyspark操作Hudi

文章目录前言一. pyspark连接hudi二. 创建表三. 插入数据四. 查询数据五. Time Travel查询六. 更新数据七. 增量查询八. 基于时间点查询九. 删除数据9.1 软删除9.2 硬删除十. 插入覆盖十一. Spark其它命令11.1 Alter Table11.2 Partition SQL Command参考:前言 软件版本Python…

低成本MEMS惯导系统的捷联惯导解算MATLAB仿真

低成本MEMS惯导系统的捷联惯导解算MATLAB仿真一、姿态角转换为四元数二、四元数转换为姿态角三、反对称阵四、位置更新五、姿态更新六、程序及数据主程序:子程序:数据及完整程序之前将高成本的捷联惯导忽略地球自转、圆锥曲线运动以及划桨运动等化简为可…

【学习笔记之Linux】工具之make/Makefile与git

make/Makefile: 背景知识: 一个工程中的源文件不计数,按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,那些文件需要重新编…

电源《龙珠超:超级人造人》观后感

上周看了动画电影《龙珠超:超级人造人》,《龙珠》这个系列同《火影》、《死神》、《海贼王》和《名侦探柯南》等都存在了很长时间,不断在更新,都是非常好的IP,伴随着很多人走过童年,也是因为时间太长了,记得…

品牌打假,假货治理,有什么好的方法

品牌打假,清除渠道假货,可以提高消费者对品牌的满意度与忠诚度,增强经销商的经销信心,维护稳定的价格体系及经销体系,树立良好的品牌形象。 但是品牌在打假的过程中,由于经验、时间、方法、技术等方面的局…

测试开发 | 接口测试之HTTP 协议讲解

本文节选自霍格沃兹测试开发学社内部教材HTTP 协议是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。客户端向服务端发送 HTTP 请求,服务端则会在响应中返回所请求的数据。了解了 HTTP 协议,才能对接口测试进行更…

sql实现字段分割一行转多行的示例代码

先看一下数据结构,我这里字段比较少,只弄了最重要的部分 根据我们上次学到的LEFT()函数进行分组 SELECT LEFT(provinces,6),COUNT(1) FROM region_map_copy GROUP BY LEFT(provinces,6) 得到的结果如下: 这样的效果并不是我们想要的&#x…

必贝特科创板IPO过会:预计2025年前实现商业化,钱长庚为实控人

2023年1月10日,上海证券交易所披露的信息显示,广州必贝特医药股份有限公司(下称“必贝特”)获得上市委会议审核通过。据贝多财经了解,必贝特于2022年6月29日在科创板递交上市申请。 公开信息显示,必贝特是一…

SwiftUI之深入解析如何使用组合矩形GeometryReader创建条形(柱状)图

一、图表布局 条形(柱状)图以矩形条的形式呈现数据的类别,其宽度和高度与它们表示的值成比例。SwiftUI 对探索不同布局和预览实时视图结果是很友好的,很容易将部分内容提取到子视图中,以便每个部分都很小且易于维护。…