<div> JavaScript is disabled on your browser.
Skip navigation links
Java™ Platform
Standard Ed. 8

Package javax.swing

提供了一套“轻量级”(所有的java语言)组件,以最大可能的程度,在所有平台上工作。

See: 描述

Package javax.swing Description

提供了一套“轻量级”(所有的java语言)组件,以最大可能的程度,在所有平台上工作。对于一个程序员指南来使用这些组件,看到Creating a GUI with JFC/Swing,java教程中的一条。其他资源,看到Related Documentation

Swing's Threading Policy

一般摆动不是线程安全的。所有的摆动组件和相关类,除非有其他记录,必须在事件调度线程上访问。

典型的摆动应用程序在响应用户手势所产生的事件时进行处理。例如,点击一个JButton通知所有的ActionListeners添加到JButton。从用户动作产生的所有事件都是根据事件调度线程,大部分开发商都不受限制的影响。

然而,在影响谎言,是在建设和显示一个摆动应用。调用应用程序的main方法或方法Applet,不在事件分发线程调用。因此,在构建和显示应用程序或小程序时,必须要对事件调度线程进行传输控制。首选的方式来传输控制和开始工作是使用invokeLater摆动。的invokeLater方法安排Runnable在事件分发线程处理。以下两个例子同样适用于传输控制和启动一个应用程序:

公共类MyApp实现Runnable {run() { public void在事件调度线程上调用。/构造和显示图形用户界面。}public static void main(String [] args){swingutilities。invokeLater(新MyApp(args));}}
或:
公共类MyApp {MyApp(string [] args){在事件调度线程上调用。做任何初始化在这里。}show() { public void显示用户界面。}public static void main(final String [] args){为事件调度线程调度一个作业:创建和显示这个应用程序的图形用户界面。swingutilities invokeLater(新runnable() {。run() { public void新show() MyApp(args);}});}}
这个限制也适用于连接到Swing组件模型。例如,如果一个 TableModel是连接到一个 JTable,的 TableModel只应在事件分发线程修改。如果你在一个单独的线程上修改模型,你就可以运行异常的风险和可能的显示腐败。

由于所有事件都在事件调度线程上发送,必须在事件处理中进行护理。特别是,一个长期运行的任务,如网络的输入或计算密集型处理,在事件调度线程上执行的事件调度线程调度任何其他事件。当事件调度线程被阻塞时,应用程序对用户输入完全没有响应。参考SwingWorker做这样的处理工作与摆动时的首选方式。

关于这个话题的更多信息可以在Swing tutorial发现,特别是在Concurrency in Swing截面。

Related Documentation

概述、教程、实例教程,和其他文档,请参阅:

Skip navigation links
Java™ Platform
Standard Ed. 8

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.

本帮助文档是使用 《百度翻译》翻译,请与英文版配合使用 by--QQ:654638585