Module
java.desktop
Package javax.swing
提供一套“轻量级”(全Java语言)组件,尽可能地在所有平台上工作。
有关使用这些组件的程序员指南,请参阅“Java教程”中的 Creating a GUI with JFC/Swing 。
有关其他资源,请参阅Related Documentation 。
Swing's Threading Policy
一般来说Swing不是线程安全的。 除非另有说明,所有Swing组件和相关类都必须在事件分派线程上访问。 典型的Swing应用程序响应于从用户手势产生的事件进行处理。 例如,点击一个JButton
通知所有ActionListeners
加入JButton
。 由于从用户手势生成的所有事件都在事件分派线程上调度,因此大多数开发人员不受该限制的影响。
然而,影响在何处,正在构建和展示Swing应用程序。 调用应用程序的main
方法,或方法Applet
,没有事件调度线程上调用。 因此,在构建和显示应用程序或小应用程序时,必须注意将控件转移到事件调度线程。 转移控制并开始使用Swing的首选方法是使用invokeLater
。 invokeLater
方法调度要在事件分派线程上处理的Runnable
。 以下两个示例同样适用于传输控制和启动Swing应用程序:
import javax.swing.SwingUtilities;
public class MyApp implements Runnable {
public void run() {
// Invoked on the event dispatching thread.
// Construct and show GUI.
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new MyApp());
}
}
要么:
import javax.swing.SwingUtilities;
public class MyApp {
MyApp(String[] args) {
// Invoked on the event dispatching thread.
// Do any initialization here.
}
public void show() {
// Show the UI.
}
public static void main(final String[] args) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MyApp(args).show();
}
});
}
}
此限制也适用于与Swing组件相连的模型。
例如,如果TableModel
附加到JTable
,则TableModel
应仅在事件分派线程上进行修改。
如果您在单独的线程上修改模型,则会冒有异常和可能的显示损坏的风险。
由于所有事件都是在事件调度线程上传递的,所以事件处理中必须注意。 特别地,在事件分派线程上执行的诸如网络io或计算密集处理的长时间运行的任务阻止事件分派线程调度任何其他事件。 当事件调度线程被阻止时,应用程序对用户输入完全没有响应。 有关使用Swing进行此类处理的首选方法,请参阅SwingWorker
。
关于这个主题的更多信息可以在发现Swing tutorial ,特别是部分上Concurrency in Swing 。
Related Documentation
有关概述,教程,示例,指南和其他文档,请参阅:-
接口摘要 接口 描述 Action 所述Action
接口提供了一个有用的扩展到ActionListener
在箱子接口,其中相同的功能可以由若干控件访问。BoundedRangeModel 定义Slider
和ProgressBar
等组件使用的数据模型。ButtonModel 按钮的状态模型。CellEditor 该界面定义了一般编辑器应该能够实现的方法。ComboBoxEditor 用于JComboBox组件的编辑器组件。ComboBoxModel<E> 组合框的数据模型。DesktopManager DesktopManager对象由JDesktopPane对象拥有。Icon 一个小的固定大小的图片,通常用于装饰组件。JComboBox.KeySelectionManager 界面定义了一个KeySelectionManager
。ListCellRenderer<E> 识别可以用作“橡皮图章”来绘制JList中的单元格的组件。ListModel<E> 该界面定义了JList使用的方法组件来获取列表中每个单元格的值以及列表的长度。ListSelectionModel 该接口表示显示具有稳定索引的值列表的任何组件的选择的当前状态。MenuElement 任何可以放入菜单的组件都应该实现这个接口。MutableComboBoxModel<E> 一个可变版本的ComboBoxModel
。Painter<T> 绘画代表。Renderer 定义负责“渲染”(显示)值的对象的要求。RootPaneContainer 该接口由具有单个JRootPane子组件的组件实现:JDialog,JFrame,JWindow,JApplet,JInternalFrame。Scrollable 向JScrollPane等滚动容器提供信息的界面。ScrollPaneConstants 与JScrollPane组件一起使用的常量。SingleSelectionModel 支持最多一个索引选择的模型。SpinnerModel 一个可能无限制的对象值序列的模型。SwingConstants 通常用于在屏幕上定位和定向组件的常数的集合。UIClientPropertyKey 该界面仅用于为JComponent
设置的JComponent
客户端属性的标签密钥,需要在L&F更改和序列化时清除。UIDefaults.ActiveValue 该类可以使用getXXX(key)
方法之一在getXXX(key)
查找时默认表中存储一个条目。UIDefaults.LazyValue 此类可以在缺省表中存储一个条目,直到第一次使用getXXX(key)
方法查找时getXXX(key)
。WindowConstants 用于控制窗口关闭操作的常量。 -
类摘要 Class 描述 AbstractAction 该类提供了JFCAction
接口的默认实现。AbstractButton 定义按钮和菜单项的常见行为。AbstractCellEditor CellEditors
的基类,为CellEditor
接口除getCellEditorValue()
之外的方法提供默认实现。AbstractListModel<E> 数据模型的抽象定义,提供一个List
及其内容。AbstractSpinnerModel 此类提供了SpinnerModel接口的ChangeListener部分,该接口应适用于大多数具体的SpinnerModel实现。ActionMap ActionMap
提供从Object
s(称为 密钥或Action
名称 )到Action
。BorderFactory 出厂标准为Border
对象。Box 一个使用BoxLayout对象作为其布局管理器的轻量级容器。Box.Filler 参与布局但没有视图的轻量级组件的实现。BoxLayout 一个布局管理器,可以将多个组件垂直或水平放置。ButtonGroup 此类用于为一组按钮创建多重排除范围。CellRendererPane 此类插入到单元格渲染器和使用它们的组件之间。ComponentInputMap 甲ComponentInputMap
是InputMap
与特定关联JComponent
。DebugGraphics 图形子类支持图形调试。DefaultBoundedRangeModel BoundedRangeModel的一般实现。DefaultButtonModel Button
组件的数据模型的默认实现。DefaultCellEditor 表和树单元格的默认编辑器。DefaultComboBoxModel<E> 组合框的默认模型。DefaultDesktopManager 这是一个DesktopManager
的实现。DefaultFocusManager 这个类已被1.4焦点API过时了。DefaultListCellRenderer 渲染列表中的项目。DefaultListCellRenderer.UIResource 实现UIResource的DefaultListCellRenderer的子类。DefaultListModel<E> 该类松散地实现了java.util.Vector
API,因为它实现了java.util.Vector
版本的java.util.Vector
,没有收集类支持,并且在发生更改时通知ListDataListener
。DefaultListSelectionModel 列表选择的默认数据模型。DefaultRowSorter<M,I> 一个RowSorter
的实现,它围绕网格数据模型提供排序和过滤。DefaultRowSorter.ModelWrapper<M,I> DefaultRowSorter.ModelWrapper
负责提供按DefaultRowSorter
排序的数据。DefaultSingleSelectionModel SingleSelectionModel的一般实现。FocusManager 这个类已被1.4焦点API过时了。GrayFilter 通过将图像转换成灰度图像来“禁用”图像并增亮图像中的像素的图像滤镜。GroupLayout GroupLayout
是一个LayoutManager
,它分层组合组件,以便将它们放置在一个Container
。ImageIcon 从图像绘制图标的图标界面的实现。InputMap InputMap
提供输入事件(目前仅使用KeyStroke
s)与Object
。InputVerifier 此类为Swing组件提供了验证机制。InternalFrameFocusTraversalPolicy FocusTraversalPolicy可以选择提供一种用于确定JInternalFrame初始组件的算法。JApplet Deprecated. Applet API已被弃用。JButton 实现“推”按钮。JCheckBox 复选框的实现 - 可以选择或取消选择的项目,并向用户显示其状态。JCheckBoxMenuItem 可以选择或取消选择的菜单项。JColorChooser JColorChooser
提供了一个设计用于允许用户操纵和选择颜色的控件窗格。JComboBox<E> 组合按钮或可编辑字段和下拉列表的组件。JComponent 除顶级容器之外的所有Swing组件的基类。JDesktopPane 用于创建多文档界面或虚拟桌面的容器。JDialog 创建对话窗口的主要类。JEditorPane 用于编辑各种内容的文本组件。JFileChooser JFileChooser
为用户提供了一种简单的机制来选择文件。JFormattedTextField JFormattedTextField
扩展了JTextField
增加了格式化任意值的支持,以及一旦用户编辑了文本就检索了一个特定的对象。JFormattedTextField.AbstractFormatter AbstractFormatter
实例由JFormattedTextField
用于处理从对象到字符串以及从字符串返回到对象的转换。JFormattedTextField.AbstractFormatterFactory AbstractFormatterFactory
实例由JFormattedTextField
用于获取JFormattedTextField
实例,AbstractFormatter
这些实例又用于格式化值。JFrame 扩展版本的java.awt.Frame
,增加了对JFC / Swing组件架构的支持。JInternalFrame 一个轻量级对象,提供了本机框架的许多功能,包括拖动,关闭,成为图标,调整大小,标题显示以及对菜单栏的支持。JInternalFrame.JDesktopIcon 该组件代表JInternalFrame
的图标化版本。JLabel 用于短文本字符串或图像的显示区域,或两者。JLayer<V extends Component> JLayer
是用于Swing组件的通用装饰器,可以实现各种先进的绘画效果,并接收在其边框内生成的所有AWTEvent
的通知。JLayeredPane JLayeredPane
增加了JFC / Swing容器的深度,允许组件在需要时重叠。JList<E> 显示对象列表并允许用户选择一个或多个项目的组件。JList.DropLocation 的一个子类TransferHandler.DropLocation
表示用于一个放置位置JList
。JMenu 一个菜单的实现 - 一个包含JMenuItem
的弹出窗口,当用户选择JMenuBar
上的项目时JMenuBar
。JMenuBar 一个菜单栏的实现。JMenuItem 菜单中项目的实现。JOptionPane JOptionPane
可以方便地弹出一个标准对话框,提示用户获取值或通知他们某些东西。JPanel JPanel
是一个通用的轻量级容器。JPasswordField JPasswordField
是一个轻量级组件,允许编辑单行文本,其中视图指示输入的内容,但不显示原始字符。JPopupMenu 弹出菜单的一个实现 - 弹出一个小窗口并显示一系列选择。JPopupMenu.Separator 弹出菜单特定的分隔符。JProgressBar 可视化显示某些任务进度的组件。JRadioButton 单选按钮的实现 - 可以选择或取消选择的项目,并将其状态显示给用户。JRadioButtonMenuItem 单选按钮菜单项的实现。JRootPane 通过在后台使用一个轻量级容器JFrame
,JDialog
,JWindow
,JApplet
,并JInternalFrame
。JScrollBar 一个滚动条的实现。JScrollPane 提供轻量级组件的可滚动视图。JSeparator JSeparator
提供了一种用于实现分割线的通用组件 - 通常用作将其分解为逻辑分组的菜单项之间的分隔符。JSlider 允许用户通过在有界间隔内滑动旋钮图形地选择值的组件。JSpinner 单行输入字段,允许用户从有序序列中选择一个数字或一个对象值。JSpinner.DateEditor 一个JSpinner
的编辑器,其型号是SpinnerDateModel
。JSpinner.DefaultEditor 更专业的编辑器的简单基类,可以使用JFormattedTextField
显示模型当前值的JFormattedTextField
。JSpinner.ListEditor 一个JSpinner
的编辑器,其型号是SpinnerListModel
。JSpinner.NumberEditor 一个JSpinner
的编辑器,其型号是SpinnerNumberModel
。JSplitPane JSplitPane
用于划分两个(只有两个)Component
s。JTabbedPane 通过点击具有给定标题和/或图标的选项卡,用户可以在一组组件之间切换的组件。JTable JTable
用于显示和编辑单元格的常规二维表。JTable.DropLocation 的一个子类TransferHandler.DropLocation
表示用于一个放置位置JTable
。JTextArea AJTextArea
是显示纯文本的多行区域。JTextField JTextField
是一个轻量级组件,允许编辑单行文本。JTextPane 可以用图形化的属性标记的文本组件。JToggleButton 一个两状态按钮的实现。JToggleButton.ToggleButtonModel ToggleButton模型JToolBar JToolBar
提供了一个组件,可用于显示常用的Action
s或控件。JToolBar.Separator 工具栏特定的分隔符。JToolTip 用于显示组件的“提示”。JTree JTree.DropLocation 的一个子类TransferHandler.DropLocation
表示用于一个放置位置JTree
。JTree.DynamicUtilTreeNode DynamicUtilTreeNode
可以包装向量/哈希表/数组/字符串,并根据需要创建适当的子树节点。JTree.EmptySelectionModel EmptySelectionModel
是一个TreeSelectionModel
,不允许任何东西被选中。JViewport 您可以通过它查看基础信息的“视口”或“舷窗”。JWindow AJWindow
是可以在用户桌面上的任何位置显示的容器。KeyStroke KeyStroke表示键盘或等效输入设备上的关键操作。LayoutFocusTraversalPolicy 一个SortingFocusTraversalPolicy,它根据大小,位置和方向对组件进行排序。LayoutStyle LayoutStyle
提供了有关如何定位组件的信息。LookAndFeel LookAndFeel
,顾名思义,封装外观。MenuSelectionManager MenuSelectionManager拥有菜单层次结构中的选择。OverlayLayout 布局管理器将组件排列在彼此的顶部。Popup 弹出窗口用于向用户显示Component
,通常位于特定的包含层次结构中的所有其他Component
。PopupFactory PopupFactory
,顾名思义,用于获取Popup
的实例。ProgressMonitor 一类监视某些操作的进度。ProgressMonitorInputStream 监视从一些InputStream读取进度。RepaintManager 此类管理重绘请求,允许重绘的数量最小化,例如通过将多个请求压缩为组件树成员的单个重绘。RowFilter<M,I> RowFilter
用于过滤模型中的条目,以便它们不会在视图中显示。RowFilter.Entry<M,I> 一个Entry
对象传递给RowFilter
实例,允许过滤器获取条目数据的值,从而确定是否应该显示条目。RowSorter<M> RowSorter
为排序和筛选提供依据。RowSorter.SortKey SortKey描述特定列的排序顺序。ScrollPaneLayout 由JScrollPane
使用的布局管理器。ScrollPaneLayout.UIResource UI资源版本为ScrollPaneLayout
。SizeRequirements 为了方便布局管理器,计算有关组件的大小和位置的信息。SizeSequence ASizeSequence
对象有效地维护有序的大小和相应位置的列表。SortingFocusTraversalPolicy FocusTraversalPolicy通过基于给定的比较器对焦点遍历周期的组件进行排序来确定遍历顺序。SpinnerDateModel ASpinnerModel
,序列为Date
。SpinnerListModel SpinnerModel
的简单实现,其值由数组或List
定义。SpinnerNumberModel ASpinnerModel
用于数字序列。Spring Spring
类的一个实例包含表征其行为的三个属性: 最小值 , 首选值和 最大值 。SpringLayout ASpringLayout
根据一组约束规定了其关联容器的子项。SpringLayout.Constraints 一个Constraints
对象包含控制由一个SpringLayout
控制的容器中组件的大小和位置变化方式的SpringLayout
。SwingUtilities Swing的一个实用方法的集合。SwingWorker<T,V> 在后台线程中执行冗长的GUI交互任务的抽象类。Timer 以指定的间隔触发一个或多个ActionEvent
。ToolTipManager 管理系统中的所有ToolTips
。TransferHandler 这个类用于处理一个Transferable
到Swing组件的传输。TransferHandler.DropLocation 表示应插入丢弃数据的位置。TransferHandler.TransferSupport 该类封装了剪贴板的所有相关细节或拖放传输,还允许自定义拖放体验的方面。UIDefaults Swing组件的默认表。UIDefaults.LazyInputMap LazyInputMap
将在其createValue
方法中创建一个InputMap
。UIDefaults.ProxyLazyValue 该类提供了一个LazyValue
的实现,可以用于延迟加载要创建的实例的Class。UIManager UIManager
管理目前的外观和感觉,一组可用的外观和感觉,PropertyChangeListeners
,当外观和感觉变化,外观和感觉默认值以及获取各种默认值的便利方法时通知。UIManager.LookAndFeelInfo 提供有关安装的LookAndFeel
的一些信息,以便配置菜单或初始应用程序设置。ViewportLayout 默认布局管理器为JViewport
。 -
枚举摘要 Enum 描述 DropMode 拖放模式,用于确定组件在拖放过程中跟踪并指示放置位置的方法。GroupLayout.Alignment 枚举可能的方式ParallelGroup
可以对ParallelGroup
。JTable.PrintMode 打印模式,用于打印JTable
s。LayoutStyle.ComponentPlacement ComponentPlacement
是可以相对于彼此放置两个组件的可能方式的列举。RowFilter.ComparisonType 枚举一些默认的RowFilter
s支持的可能比较值。SortOrder SortOrder是可能的排序顺序的枚举。SwingWorker.StateValue state
绑定属性的值。 -
异常摘要 异常 描述 UnsupportedLookAndFeelException 表示所请求的外观和感觉管理类的异常不在用户系统上。 -
注解类型摘要 Annotation Type 描述 SwingContainer 用于为自动生成的BeanInfo
类指定一些与swing相关的信息的注释。