Swing入门
https://docs.oracle.com/javase/tutorial/uiswing/index.html
About the JFC and Swing
JFC=Java Foundation Classes=java基础类
用途:1用于构建图形用户界面;2给Java应用添加图形和交互功能
为什么叫JFC:MFC=Microsoft Foundation Class Library
JFC包含下表特性:
Feature
Description
Swing GUI Components
包括从按钮、分割窗格到表格等所有内容。许多组件都支持排序、打印、拖放等功能,以上仅是其中的一些特点。
Pluggable Look-and-Feel Support
Swing 应用程序的外观和操作方式是可插件化的,允许用户选择不同的界面风格。例如,同一个程序可以使用 Java 风格或 Windows 风格。此外,Java 平台还支持 GTK+ 风格,使得数百种现有的界面风格可以被 Swing 程序使用。还有更多的界面风格包可以从不同的来源获得。
Accessibility API
使辅助技术(如屏幕阅读器和盲文显示器)能够从用户界面获取信息。
Java 2D API
使开发者能够轻松地在应用程序和小程序中加入高质量的 2D 图形、文本和图像。Java 2D 包括了丰富的 API,用于生成并将高质量的输出发送到打印设备。
Internationalization
允许开发者构建能够与全球用户以他们自己的语言和文化习惯进行互动的应用程序。通过输入法框架,开发者可以构建接受使用成千上万不同字符的语言(如日语、中文或韩语)文本的应用程序。
本教程专注于 Swing 组件。我们将帮助你选择适合你图形用户界面(GUI)的组件,告诉你如何使用它们,并提供你需要的背景信息,以便你能够有效地使用它们。我们还将讨论其他与 Swing 组件相关的特性。
Which Swing Packages Should I Use?
Swing API功能强大、灵活且庞大。Swing API有18个公共包:
javax.accessibility
javax.swing.plaf
javax.swing.text
javax.swing
javax.swing.plaf.basic
javax.swing.text.html
javax.swing.border
javax.swing.plaf.metal
javax.swing.text.html.parser
javax.swing.colorchooser
javax.swing.plaf.multi
javax.swing.text.rtf
javax.swing.event
javax.swing.plaf.synth
javax.swing.tree
javax.swing.filechooser
javax.swing.table
javax.swing.undo
幸运的是,大多数程序只使用 API 的一小部分。本教程为你整理了 API,提供了常见代码示例,并指引你使用可能需要的方法和类。本教程中的大部分代码仅使用一个或两个 Swing 包:
javax.swing
javax.swing.event (不总是需要)
Compiling and Running Swing Programs
package start;
import javax.swing.*;
public class HelloWorldSwing {
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add the ubiquitous "Hello World" label.
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
注释:
frame指一种基本的形状或结构(structure),尤其是勾勒或围绕门窗的形状或结构。如果你用力关上卧室的门,整个门框(the whole frame)可能会摇晃。
pane:窗格;一块玻璃,尤其是适合窗框(a window frame)的玻璃。