Java图形化界面编程——Container容器 笔记

2.3 Container容器

2.3.1 Container继承体系

请添加图片描述

  • Winow是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
  • Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
  • ScrollPane 是 一个带滚动条的容器,它也不能独立存在,默认使用 BorderLayout 管理其内部组件布局;

2.3.2 常见API

Component作为基类,提供了如下常用的方法来设置组件的大小、位置、可见性等。

方法签名方法功能
setLocation(int x, int y)设置组件的位置。
setSize(int width, int height)设置组件的大小。
setBounds(int x, int y, int width, int height)同时设置组件的位置、大小。
setVisible(Boolean b):设置该组件的可见性。

Container作为容器根类,提供了如下方法来访问容器中的组件

方法签名方法功能
Component add(Component comp)向容器中添加其他组件 (该组件既可以是普通组件,也可以 是容器) , 并返回被添加的组件 。
Component getComponentAt(int x, int y):返回指定点的组件 。
int getComponentCount():返回该容器内组件的数量 。
Component[] getComponents():返回该容器内的所有组件 。

2.3.3 容器演示

2.3.3.1 Window
import java.awt.*;public class FrameDemo {public static void main(String[] args) {//1.创建第一个窗口Frame frame = new Frame("这是第一个窗口Frame");//2.设置窗口的大小和位置frame.setBounds(100,100,500,300);//3.设置窗口的可见性frame.setVisible(true);}
}

请添加图片描述

2.3.3.2 Panel
import java.awt.*;public class PanelDemo {public static void main(String[] args) {//1.创建窗口对象Frame frame = new Frame("这里测试Fanel");//2.创建内容面板Panel panel = new Panel();//3.添加一个文本到面板里面panel.add(new Label("这是一个测试文本"));//4.添加一个按钮到面板里面panel.add(new Button("这是一个测试按钮"));//5.把面板添加(容纳)到窗口中frame.add(panel);//6.设置窗口的位置大小frame.setBounds(100,100,500,300);//7.设置窗口的可见性frame.setVisible(true);}
}

在这里插入图片描述
由于IDEA默认使用utf-8进行编码,但是当前我们执行代码是是在windows系统上,而windows操作系统的默认编码是gbk,所以会乱码,如果出现了乱码,那么只需要在运行当前代码前,设置一个jvm参数 -Dfile.encoding=gbk即可。

步骤:
在这里插入图片描述
点那个下三角选择Edit Configurations。

在这里插入图片描述
来到这个界面点击Modify options,选择ADD VM Options。

在这里插入图片描述
在这里添加-Dfile.encoding=gbk即可。

结果:

在这里插入图片描述

2.3.3.3 ScrollPane
import java.awt.*;public class ScrollPaneDemo {public static void main(String[] args) {//1.创建Frame窗口对象Frame frame = new Frame("这里测试ScrollPane");//2.创建一个ScrollPane滚动面板对象,参数ScrollPane.SCROLLBARS_ALWAYS意味默认带有滚动条ScrollPane scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);//3.添加一个文本到滚动面板scrollPane.add(new Label("这是一个测试文本"));//4.添加一个按钮到滚动面板scrollPane.add(new Button("这是一个测试按钮"));//5.将scrollPane添加到frame里面frame.add(scrollPane);//6.设窗口的位置大小frame.setBounds(100,100,500,300);//7.设置窗口的可见性frame.setVisible(true);}
}

(配置与上面同理)

程序明明向 ScrollPane 容器中添加了 一个文本框和一个按钮,但只能看到 一个按钮,却看不到文本框 ,这是为什么 呢?

这是因为ScrollPane 使用 BorderLayout 布局管理器的缘故,而 BorderLayout 导致了该容器中只有一个组件被显示出来 。 下一节将向详细介绍布局管理器的知识 。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编曲入门软件哪个好 编曲入门教程 Studio One哪个版本好 Studio One6.5正版多少钱 FL Studio下载

新手编曲软件推荐?新手学编曲要先熟悉编曲逻辑,因此需要选择编曲逻辑简明易懂的宿主软件。编曲新手应该做哪些准备?准备好编曲设备、宿主软件、基础乐理学习资料。 一、编曲入门软件哪个好 新手入门阶段还没有形成系统的编曲思维&#xff0…

JSDoc 注释规范

JSDoc 注释 在 前端项目中,注释格式包含了一些特殊标记,如 param、returns 等,这种注释通常是用来标记函数或方法的参数和返回值的数据类型和描述。 这种注释格式通常被称为 JSDoc 注释。在实际开发中,这样的注释可以被一些工具解…

每日一题!如约而至!(图片整理,寻找数组的中心下标)

今天是腊月二十九&#xff0c;挂灯笼喽&#xff01; 图片整理_牛客题霸_牛客网 (nowcoder.com) #include <stdio.h> #include <string.h>int main() {char str[1001] {\0};while (scanf("%s", str) ! EOF) {//输入的是字符串int len strlen(str);for(…

今日arXiv最热NLP大模型论文:无需数据集,大模型可通过强化学习与实体环境高效对齐 | ICLR2024

引言&#xff1a;将大型语言模型与环境对齐的挑战 虽然大语言模型&#xff08;LLMs&#xff09;在自然语言生成、理解等多项任务中取得了显著成就&#xff0c;但是在面对看起来简单的决策任务时&#xff0c;却常常表现不佳。这个问题的主要原因是大语言模型内嵌的知识与实际环…

【力扣】查找总价格为目标值的两个商品,双指针法

查找总价格为目标值的两个商品原题地址 方法一&#xff1a;双指针 这道题和力扣第一题“两数之和”非常像&#xff0c;区别是这道题已经把数组排好序了&#xff0c;所以不考虑暴力枚举和哈希集合的方法&#xff0c;而是利用单调性&#xff0c;使用双指针求解。 考虑数组 pri…

Android 环境搭建

1、桥接工具安装 网站地址&#xff1a;AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 使用安装包&#xff1a; adb 查看当前链接成功的设备&#xff1a;adb devices 使用adb shell指令来进入到手机的后台&#xff1a;

Redis篇之缓存击穿

一、什么是缓存击穿 1.缓存击穿的定义 缓存击穿&#xff1a;给某一个key设置了过期时间&#xff0c;当key过期的时候。恰好这时间点对这个key有大量的并发请求过来&#xff0c;这些并发的请求可能会瞬间把DB压垮。 2.图片理解 二、那么应该如何解决呢 1.方案一&#xff1a;…

C语言——移除元素(三种方法)

目录 前言 ​一.暴力遍历 二.临时数组 三.双指针法(推荐) 前言 https://leetcode.cn/problems/remove-element/ 这是力扣上的一道简单题&#xff0c;我们可以根据前面所讲的顺序表中的删除来实现&#xff0c;同时还有多种解法&#xff0c;下面将依次讲解 一.暴力遍历 这…

【高阶数据结构】位图布隆过滤器

文章目录 1. 位图1.1什么是位图1.2为什么会有位图1.3 实现位图1.4 位图的应用 2. 布隆过滤器2.1 什么是布隆过滤器2.2 为什么会有布隆过滤器2.3 布隆过滤器的插入2.4 布隆过滤器的查找2.5 布隆过滤器的模拟实现2.6 布隆过滤器的优点2.7 布隆过滤器缺陷 3. 海量数据面试题3.1 哈…

Android开发-之屏幕适配

Android开发-之屏幕适配 前言 Android 系统能发展到今天&#xff0c;离不开其开源性&#xff0c;但是随着越来越多的设备接入 Android 系统&#xff0c;并对 Android 系统进行各种各样的定制&#xff0c;导致长期以来出现了各种碎片化严重的问题。例如&#xff0c;Android 屏…

基于Chrome插件的Chatgpt对话无损导出markdown格式(Typora完美显示)

刚刚提交插件到Chrome插件商店正在审核&#xff0c;想尝试的可以先使用&#xff1a; https://github.com/thisisbaiy/ChatGPT-To-Markdown-google-plugin/tree/main 我将源代码上传至了GitHub&#xff0c;欢迎star, IssueGoogle插件名称为&#xff1a;ChatGPT to MarkDown plus…

STM32输出PWM波控制180°舵机

时间记录&#xff1a;2024/2/8 一、PWM介绍 &#xff08;1&#xff09;脉冲宽度调制 &#xff08;2&#xff09;占空比&#xff1a;高电平时间占整个周期时间的比例 &#xff08;3&#xff09;STM32通过定时器实现PWM时具有两种模式 PWM1模式&#xff1a;向上计数模式下&…