<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Swing_%28Java%29</id>
	<title>Swing (Java) - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Swing_%28Java%29"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Swing_(Java)&amp;action=history"/>
	<updated>2026-06-25T19:54:32Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Swing_(Java)&amp;diff=64095&amp;oldid=prev</id>
		<title>imported&gt;Vincent4486：​/* Hello World程序 */ 删除不必要的行且将注释更改为全中文（以测试，可用）</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Swing_(Java)&amp;diff=64095&amp;oldid=prev"/>
		<updated>2025-12-31T10:25:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Hello World程序：​&lt;/span&gt; 删除不必要的行且将注释更改为全中文（以测试，可用）&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{otheruses|Swing (組合)}}&lt;br /&gt;
{{NoteTA|G1=IT|time=2015-04-08T10:26:06+00:00}}&lt;br /&gt;
[[Image:Gui-widgets.png|thumb|300px|Java 5之Swing部件在[[X_Window系統]]的使用]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Swing&amp;#039;&amp;#039;&amp;#039;是一个为[[Java]]设计的[[GUI]]工具包，屬於[[JFC|Java基础类]]的一部分。Swing包括了[[图形用户界面]]（GUI）功能，其组件包含：[[文本框]]、文本域、[[按钮 (用户界面)|按钮]]、表格、列表等。&lt;br /&gt;
&lt;br /&gt;
Swing提供许多比[[AWT]]更好的屏幕显示元素。它们用纯Java写成，所以同Java本身一样可以跨平台运行，这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题（各种操作系统默认的特有主题），然而不是真的使用原生平台提供的设备，而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用Java支持的任意面板。轻量级元件的缺点则是执行速度较慢，优点就是可以在所有平台上采用统一的行为。&lt;br /&gt;
&lt;br /&gt;
== Hello World程序 ==&lt;br /&gt;
&amp;#039;&amp;#039;Swing程序&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039; HelloWorldSwing.java &amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.swing.*;&lt;br /&gt;
&lt;br /&gt;
public class HelloWorldSwing {&lt;br /&gt;
    /**&lt;br /&gt;
     * 创建并显示GUI。出于线程安全的考虑，&lt;br /&gt;
     * 这个方法在事件调用线程中调用。&lt;br /&gt;
     */&lt;br /&gt;
    private static void createAndShowGUI() {&lt;br /&gt;
	&lt;br /&gt;
	    // 确保的窗口装饰美观&lt;br /&gt;
	    JFrame.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;
&lt;br /&gt;
        // 创建并设置窗口&lt;br /&gt;
        JFrame frame = new JFrame(&amp;quot;HelloWorldSwing&amp;quot;);&lt;br /&gt;
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
	    frame.setResizable(true);&lt;br /&gt;
	    frame.setSize(300, 200);&lt;br /&gt;
&lt;br /&gt;
        // 添加 &amp;quot;Hello World&amp;quot; label&lt;br /&gt;
        JLabel label = new JLabel(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
        frame.add(label);&lt;br /&gt;
&lt;br /&gt;
        // 显示窗口&lt;br /&gt;
        frame.setVisible(true);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        SwingUtilities.invokeLater(new Runnable() {&lt;br /&gt;
            public void run() {&lt;br /&gt;
                createAndShowGUI();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
互联网基础类（IFC）是[[Netscape|网景公司]]最初为[[Java]]开发的[[图形库]]，第一次发布于1996年12月16日。&lt;br /&gt;
&lt;br /&gt;
在1997年4月2日，[[昇陽|太陽公司]]和网景公司宣称他们要将IFC和其他技术合并形成[[JFC|Java基础类]]。作为IFC最初提供组件的附加品，Swing引进了一个機制：在不改变大量的程序代码前提下允许程序中每个组件[[面板]]的变化。支持可更换面板技术的引入允许Swing组件在模拟原生组件外观的同时又保持了平台独立的优点。&lt;br /&gt;
&lt;br /&gt;
==架构==&lt;br /&gt;
Swing是一个基于Java的跨平台MVC框架。使用单线程模式。此框架还在代码结构层和图形渲染层之间插入了一个抽象层。&lt;br /&gt;
&lt;br /&gt;
=== 可扩展性 ===&lt;br /&gt;
Swing使用了高度模块化的架构，可以通过接口的方式使用各种定制框架来扩展Swing。用户可以通过Java的继承机制重写原始的组件来实现自己的代码。&amp;lt;ref&amp;gt;&amp;quot;LookAndFeel (Java Platform SE 7 )&amp;quot;, Oracle Documentation, http://docs.oracle.com/javase/7/docs/api/javax/swing/LookAndFeel.html {{Wayback|url=http://docs.oracle.com/javase/7/docs/api/javax/swing/LookAndFeel.html |date=20130106102920 }}, 5/26/2012&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Swing是一个基于组件的框架，所有的组件都是从&amp;lt;tt&amp;gt;javax.swing.JComponent&amp;lt;/tt&amp;gt;类继承来的。Swing对象通过异步方式发送事件，具有边界属性，并且会响应该组件的一系列方法。Swing组件是[[Java Beans]]组件，和Java Beans组件架构完全保持一致。&lt;br /&gt;
&lt;br /&gt;
=== 可定制性 ===&lt;br /&gt;
Swing提供了可编程渲染模型，使用户可以对渲染细节进行控制。一般来看，Swing组件的视觉效果是一些通用元素的组合，比如外框、边距、窗口装饰等等。典型的情况是，用户通过编写代码，指定边框、颜色、背景、透明度等属性来定制一种通用Swing组件（如JTable）。核心组件则会用这些定制的属性来进行绘制。此外，也完全可以制作出非常特殊的GUI控件或是高度自定义的视觉效果。&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Swing custom painted screenshot 1.png|Swing个性化绘制1&lt;br /&gt;
File:Swing custom painted screenshot 2.png|Swing个性化绘制2&lt;br /&gt;
File:Swing custom painted screenshot 3.png|Swing个性化绘制3&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 可配置性 ===&lt;br /&gt;
Swing高度基于运行时的机制以及其间接的组合模式使得它可以在运行时响应对其底层设置的改变。例如，一个Swing的应用程序能在运行时动态地改变界面。此外，用户还能随时应用他们自己的Look And Feel。Look And Feel能够统一地改变当前程序的组件外观，而不用修改任何代码。&lt;br /&gt;
&lt;br /&gt;
== 和AWT的关系 ==&lt;br /&gt;
&lt;br /&gt;
Java的早期版本以来，[[AWT|抽象視窗工具包]]为用户界面组件提供了平台独立的API。在[[AWT]]中，每个组件都由一个原生的等同组件生成和控制，这个原生组件是由当前的图形視窗系统决定的。&lt;br /&gt;
&lt;br /&gt;
与此相对，Swing组件经常被描述为轻量级的，因为它们不需要操作系统本身所带視窗工具包的原生资源来生成。&lt;br /&gt;
&lt;br /&gt;
Swing API的大部分是[[AWT]]的补充扩展而不是直接的代替。Swing用来绘制轻量级组件的核心渲染功能是由[[Java2D]]提供的，这是[[AWT]]的一部分。然而，轻量级和重量级组件在同一个应用中使用会导致[[Z-order]]不兼容。&lt;br /&gt;
&lt;br /&gt;
== 同SWT的关系 ==&lt;br /&gt;
&lt;br /&gt;
[[SWT|标准器件工具包 (SWT)]]是一个最初由[[IBM]]开发的工具包，现在由[[Eclipse基金会]]维护。[[SWT]]的实现同重量级的组件[[AWT]]有更多的共同之处。这样的好处是运行开销同所在平台的原生視窗工具包更为接近。&lt;br /&gt;
&lt;br /&gt;
[[SWT]]的到来使得[[Java桌面]]的开发者们分离为[[SWT]]的支持者和Swing的支持者。在6.0版Java中，Swing的新修补专注于同原生視窗平台的逼真度，这可能会直接解决这个问题。&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
=== 引用 ===&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
=== 书籍 ===&lt;br /&gt;
* [[Matthew Robinson]]：&amp;#039;&amp;#039;Swing&amp;#039;&amp;#039;, Manning, ISBN 1-930110-88-X&lt;br /&gt;
* [[David M. Geary]]：&amp;#039;&amp;#039;Graphic Java 2, Volume 2: Swing&amp;#039;&amp;#039;, Prentice Hall, ISBN 0-13-079667-0&lt;br /&gt;
* [[James Elliott]]，[[Robert Eckstein]]，[[Marc Loy]]，[[David Wood]]，[[Brian Cole]]：&amp;#039;&amp;#039;Java Swing&amp;#039;&amp;#039;, O&amp;#039;Reilly, ISBN 0-596-00408-7&lt;br /&gt;
* [[Kathy Walrath]]，[[Mary Campione]]，[[Alison Huml]]，[[Sharon Zakhour]]：&amp;#039;&amp;#039;The JFC Swing Tutorial: A Guide to Constructing GUIs&amp;#039;&amp;#039;, Addison-Wesley Professional, ISBN 0-201-91467-0&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
{{div col|cols=2}}&lt;br /&gt;
* [http://java.sun.com/docs/books/tutorial/uiswing/index.html Swing教程]{{Wayback|url=http://java.sun.com/docs/books/tutorial/uiswing/index.html |date=20050729004431 }}&lt;br /&gt;
* [http://java.sun.com/products/jfc/tsc/index.html The Swing Connection]{{Wayback|url=http://java.sun.com/products/jfc/tsc/index.html |date=20050731012822 }}&lt;br /&gt;
* [https://web.archive.org/web/20050729002040/http://community.java.net/javadesktop/ JavaDesktop]&lt;br /&gt;
* [http://www.javootoo.com/ Java观感]{{Wayback|url=http://www.javootoo.com/ |date=20050715034602 }}&lt;br /&gt;
* [https://web.archive.org/web/20040401143633/http://clientjava.com/ ClientJava.com]&lt;br /&gt;
* Presentation &amp;quot;[https://web.archive.org/web/20050206114602/http://www.javalobby.org/eps/galbraith-swing-1/ Swing专家编程：创建优雅的程序，第一部分]&amp;quot; by [[Ben Galbraith]]&lt;br /&gt;
* Presentation &amp;quot;[https://web.archive.org/web/20050306221415/http://javalobby.org/eps/galbraith-swing-2/ Swing专家编程：创建优雅的程序，第二部分]&amp;quot; by [[Ben Galbraith]]&lt;br /&gt;
* Article &amp;quot;[https://web.archive.org/web/20051129080327/http://www.javalobby.org/articles/swing_slow/index.jsp 什么叫“Swing很慢？”]&amp;quot; by [[Sermet Yucel]]&lt;br /&gt;
* Article &amp;quot;[http://www.onjava.com/pub/a/onjava/2004/02/18/desktop.html Java桌面开发]{{Wayback|url=http://www.onjava.com/pub/a/onjava/2004/02/18/desktop.html |date=20050713081953 }}&amp;quot; by [[Andrei Cioroianu]]&lt;br /&gt;
* Article &amp;quot;[http://www.onjava.com/pub/a/onjava/2004/03/10/blackmamba.html BlackMamba：一个Swing的实例学习]{{Wayback|url=http://www.onjava.com/pub/a/onjava/2004/03/10/blackmamba.html |date=20050404062833 }}&amp;quot; by [[Ashwin Jayaprakash]]&lt;br /&gt;
* [https://web.archive.org/web/20051125032243/http://www.javaworld.com/channel_content/jw-awt-index.shtml 有关AWT/Swing的文章]&lt;br /&gt;
* [http://citeseer.ist.psu.edu/cis?q=Java+Swing Citations from CiteSeer]{{Wayback|url=http://citeseer.ist.psu.edu/cis?q=Java+Swing |date=20051216162445 }}&lt;br /&gt;
* [https://web.archive.org/web/20110526164920/http://www.swingwiki.org/ Swing wiki]包含了最棒的练习、技巧、诀窍以及如何入门&lt;br /&gt;
{{div col end}}&lt;br /&gt;
&lt;br /&gt;
[[Category:部件工具箱]]&lt;br /&gt;
[[Category:Java]]&lt;br /&gt;
[[Category:MVC]]&lt;br /&gt;
&lt;br /&gt;
[[ar:جافا (لغة برمجة)#تطبيق Swing]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Vincent4486</name></author>
	</entry>
</feed>