JavaSwing窗口创建与外观设置
立即解锁
发布时间: 2025-08-18 01:55:09 阅读量: 3 订阅数: 7 

Java编程基础与实践指南
# Java Swing 窗口创建与外观设置
## 1. Swing 组件的可插拔外观
Swing 组件通过将组件的视觉外观和用户界面交给一个独立的对象(即 UI 委托)来实现可插拔的外观。这是 MVC 模型中视图 + 控制器的部分,不同的 UI 委托可以为组件提供新的外观。
虽然修改组件外观的细节不在本次讨论范围内,但可以介绍如何设置 Java 开发工具包(JDK)中自带的标准外观。了解 Swing 组件所基于的 MVC 架构很有必要,因为它在 Java 相关文献中经常出现,而且你可能在某些时候需要更改组件的外观。
## 2. Java 中的窗口创建
在 Java 中,基本窗口由 `java.awt` 包中的 `Window` 类的对象表示。不过,`Window` 类的对象很少直接使用,因为典型的应用程序窗口通常需要边框和标题栏,而该类并不提供这些。`javax.swing` 包中的 `JFrame` 类则是创建窗口更实用的选择,它不仅有标题栏和边框,还提供了许多其他功能。
`JFrame` 的继承层次结构如下:
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Object):::process --> B(Component):::process
B --> C(Container):::process
C --> D(Window):::process
C --> E(Frame):::process
D --> F(JFrame):::process
E --> F
```
各超类的作用如下:
| 类名 | 作用 |
| ---- | ---- |
| `Component` | 所有组件类的基类,定义了所有组件共享的基本属性和方法。所有 Swing 组件都以 `Component` 类为基础。 |
| `Container` | 为 `Component` 对象添加了包含其他组件的能力,这是常见需求。由于 `JFrame` 以 `Container` 为超类,所以 `JFrame` 对象可以包含其他组件。 |
| `Window` | 为 `Container` 类添加了特定于窗口的方法,例如处理用户与窗口交互产生的事件的能力。 |
| `Frame` | `java.awt` 中最初提供带有标题栏和边框的正规窗口的类。 |
| `JFrame` | 在 `Frame` 类的基础上增加了功能,以支持更复杂的绘图和显示其他组件的设施。 |
## 3. 显示应用程序窗口示例
可以通过创建 `JFrame` 类型的对象、调用设置窗口大小的方法,然后调用显示窗口的方法来显示应用程序窗口。以下是示例代码:
```java
import javax.swing.JFrame;
public class TryWindow {
// The window object
static JFrame aWindow = new JFrame("This is the Window Title");
public static void main(String[] args) {
int windowWidth = 400; // Window width in pixels
int windowHeight = 150; // Window height in pixels
aWindow.setBounds(50, 100, // Set position
windowWidth, windowHeight); // and size
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aWindow.setVisible(true); // Display the window
}
}
```
在 Microsoft Windows 系统上运行该程序,将显示一个窗口,这是系统的默认外观,对应于 JDK 自带的 Java 跨平台外观。
常见的外观类及其适用平台如下:
| 外观类 | 适用平台 |
| ---- | ---- |
| `javax.swi
0
0
复制全文


