- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
一、前言
awt继承体系
container容器
常见的API
容器的演示
AWT常用组件
Swing概述
Swing的优势:
Swing组件和AWT组件的对应关系:
这是一个很少用的技术了,所以只是粗略的了解一下
java使用awt和swing可以完成图形化界面编程
其中AWT的全称是抽象窗具集(Abstract Window Toolkit)它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing。通过使用AWT和Swng提供的图形化界面组件片,java的图形化界面编程非常简单。
其中Container是一种特殊的Component,它代表一种容器,可以盛装普通的Component。
AWT中还有个非常重要的接口叫LayoutManager如果个容器中有多个组件,那么容器就需要使用 LayoutManager来管理这些组件的布局方式。
container容器
Containe继承体系
Window是可以独立存在的顶级窗口,默认使用BorderLayout管理其内部组件布局;
Panel可以容纳其他组件,但不能独立存在,它必须内嵌其他容器中使用,默认使用FlowLayout管理其内部组件布局;
ScrollPane是一个带滚动条的容器,它也不能独立存在,默认使用BorderLayout管理其内部组件布局
Component作为基类,提供了如下常用的方法付来设置组件的大小、位置、可见性等。
container作为容器根类,提供了如下方法来访问容器中的组件
ctrl+b查看了Frame的源码可知,Frame继承了window,所以可以直接创建对象
public class Frame extends Window implements MenuContainer
运行结果
** panel测试**
public class PanelDemo {
public static void main(String[] args) {
//1、创建一个window对象,因为panel以及其他的容器都不能独立存在,必须依附于window上
Frame frame=new Frame("这是演示Panel");
//2、创建一个Panel对象
Panel p =new Panel();
//3、创建一个文本框和一个按钮,并把它们放到Panel容器中
p.add(new TextField("这里是一个测试文本"));
p.add(new Button("这是一个测试按钮"));
//4、把panel放到window中
frame.add(p);
//5、设置window的位置以及大小
frame.setBounds(100, 100, 500, 300);
//6、设置window可见
frame.setVisible(true);
}
}
我们发现按钮乱码了,这是因为idea中设置的是utf-8,而我们这个按钮是以我们当前的操作系统(我的是window)来创建的,是中文的默认是gbk
我们只需要在配置环境这:
在虚拟机选项那加上下面这句即可,改成编码解码一致都是gbk就不会乱码了
-Dfile.encoding=gbk
运行:
| 件名 | 功能 |
| Button | 按钮 |
| ** Canvas ** | 用于绘图的画布 |
| Checkbox | 复选框组件(也可当做单选框组件使用) |
| CheckboxGroup | <br>用于将多个Checkbox组件组合成一组,一组Checkbox组件将只有一个可以被选中,<br><br>即全部变成单选框组件<br> |
| |
| Choice | 下拉选择框 |
| Frame | 窗口,在GUI程序里通过该类创建窗口 |
| Label | 标签类,用于放置提示性文本 |
| List | 列表框件,可以添加多项条日 |
| Panel | 不能单独存在基本容器类,必须放到其他容器中 |
| | <br>滑动条组件。如果需要用户输入位于某个范围的值,就可以使用滑动条组件,比如调色板中<br><br>设置RGB的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向,初始值、滑块的大小、<br><br>最小值和最大值。<br> |
| Scrollbar |
| |
| ScrollPane | 带水平及垂直滚动条的容器组件 |
| TexlArea | 多行文本域 |
| TextField | <br>单行文本框 <br> |
Swing是由100%纯Java实现的,不再依赖于本地平台的GUI,因此可以在所有平台上都保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件而依赖于本地平台的AWT组件被称为重量级组件。
由于Swing的所有组件完全采用Java实现,不再调用本地平台的GUI,所以导致Swing图形界面的显示速度要比AWT图形界面的显示速度慢一些
,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。
大部分Swing组件都是JComponent抽象类的直接或间接子类(并不是全部的Swing组件),Component类定义了所有子类组件的通用方法,Component类是AWT里javaawtContainer类的子类,这也是AWT和 Swing的联系之一。绝大部分Swing组件类继承了Container类,所以Swing组件都可作为容器使用(JFrame继承了Frame类)。
大部分情况下,只需要在AWT组件的名称前面加个J,就可以得到其对应的Swing组件名称,但有几个例外:
1.ComboBox对应于AWT里的Choice组件,但比Chcice组件功能更富
2.JFileChwoser:对应干AWT甲的FileDialog组件。
3.ScrollBar:对应丁AWT里的Scrollbar组件注意两个组件类名中b字母的大小写差别。
4.CheckBox对应于AWT里的Checkbox组件,注意两个组件类名中b字母的大小写差别,
5.CheckBoxMenultem:对应于AWT里的CheckboxMenultem组件,注意两个组件类名中b字母的大小写差别。
AWT-EventQueue 线程和 AWT-Shutdown 线程没有在我们的应用程序中关闭。有没有一种调试技术可以找出它们不存在的原因?有什么特别的东西要寻找吗? 最佳答案 如果你的意思是关闭所有
java.awt.* 和 java.awt.event.* 有什么区别? 最佳答案 这只是两个不同的包。 当您说import java.awt.*时,它仅导入那些完全属于java.awt包的类,而不是
我正在将 aadhar 集成到 liferay 中。我尝试了这个链接 https://developer.uidai.gov.in/site/book/export/html/18 所以我想将其集成到
我想知道如何确定 Java.awt.Rectangle 是否包含特定 Java.awt.Color 的像素。我一直在到处寻找,但找不到任何关于此的信息,甚至找不到任何可能的信息。 所以我想知道如何确定
我试图在组件和图像之间切换面板的内容,它适用于组件: imgpanel.removeAll(); Component comp; if ((comp = player.getVisualCompone
我在使用 JAVA 编码时遇到一些错误,我一直在尝试解决这个问题,也试图找到其他有同样问题的人并修复它,但没有任何效果... 嗯..这是代码 package ca.vanzeben.game;
我想我可以尝试一下 JAXB 来处理存储和恢复设置。但即使是“最简单”的例子我也遇到了麻烦: import java.awt.Point; public class Config { public
这个问题已经有答案了: Import package.* vs import package.SpecificType [duplicate] (10 个回答) 已关闭 7 年前。 在我现在正在进行的
private static byte[] get_byte_data(BufferedImage image) { //WritableRaster raster = image.get
是否有可能获得标准 AWT Cursor以位图图像的形式(例如 BufferedImage )或任何可在 Graphics2D 上绘制的图像?例如,文本光标 new Cursor(Cursor.TEX
我的代码中有三个点,我想填充它们之间的区域,或者换句话说,在 3 个点之间绘制并填充一个三角形。 我想过简单地用 for 循环绘制线条(从 x1 到 x2),但我认为这不会有效,是否有其他更有效的方法
我正在制作一个小脚本,我使用鼠标键来节省我的工作时间。我可以正确、良好地使用鼠标键。但是,当使用 java.awt.Robot 和 java.awt.event.KeyEvent 时,鼠标键基本上被忽
我正在尝试在 scala 中使用 java awt 来制作一个简单的桌面应用程序。我已经在它上面工作了几天,没有任何问题,直到我有 2 天没有碰它,当我回来时,我得到一个 java.lang.NoCl
我在 VisualVM 和线程 View 中监视一个 JavaFX 程序,不断有 AWT-EventQueue-0 和 AWT-Shutdown 线程被创建和销毁。这是正常行为吗?这是什么原因? 最佳
我需要将 java.awt.geom.Area 或 java.awt.Shape 转换为 java.awt.Polygon。我所知道的是:isSingular = true、isPolygonal =
我正在重新使用 Java 并审查我的一些旧代码,并且我看到了很多我已经完成的地方 import javax.swing.*; import java.awt.*; 或者实际上从 swing/awt 包
晚上, 我在玩一个小的 swing 应用程序,我添加了一个按钮来响应按下。因此我需要实现 ActionListener。我已经添加了这一行: import java.awt.*; 但它告诉我找不到“A
我有这个 java 代码: Editor() { javax.swing.SwingUtilities.invokeLater(new Runnable() { pub
请帮我解决这个问题 sun.awt.image.ToolkitImage 无法转换为 java.awt.image.BufferedImage if (shape.hasImage())
嗨 Stackoverflow 的 friend 们 我最近将 Jenkins 服务器配置到 Apache Tomcat 7.0.42我制作的程序是将 jenkins.war 文件部署到 tomcat
我是一名优秀的程序员,十分优秀!