JavaTM 2 Platform
Standard Ed. 6

軟體套件 javax.swing

提供一組“輕量級”(全部是 Java 語言)元件,盡量讓這些元件在所有平臺上的工作方式都相同。

請參見:
          描述

介面摘要
Action Action 介面提供 ActionListener 介面的一個有用擴展,以便若干控制元件存取相同的功能。
BoundedRangeModel 定義由 SliderProgressBar 這類別元件使用的資料模型。
ButtonModel 按鈕的狀態模型。
CellEditor 此介面定義任何通用編輯器應該能夠實作的方法。
ComboBoxEditor 用於 JComboBox 元件的編輯器元件。
ComboBoxModel 用於組合框的資料模型。
DesktopManager DesktopManager 物件由 DesktopPane 物件所擁有。
Icon 一個小的固定大小圖片,通常用於裝飾元件。
JComboBox.KeySelectionManager 定義 KeySelectionManager 的介面。
ListCellRenderer 標識可用作“橡皮圖章”以繪製 JList 中單元格的元件。
ListModel 此介面定義方法元件(如 JList),這些元件用於獲取列表中每個單元格的值以及列表的長度。
ListSelectionModel 此介面表示任何元件的當前選擇狀態,該元件顯示一個具有穩定索引的值列表。
MenuElement 可以放入選單中的所有元件都應該實作此介面。
MutableComboBoxModel ComboBoxModel 的可變版本。
Renderer 為負責“呈現”(顯示)值的物件定義需求。
RootPaneContainer 此介面由具有單個 JRootPane 子元件的元件來實作,這些子元件包括:JDialog、JFrame、JWindow、JApplet、JInternalFrame。
Scrollable 為類似 JScrollPane 的滾動容器提供資訊的介面。
ScrollPaneConstants 與 JScrollPane 元件一起使用的常數。
SingleSelectionModel 最多支持一個索引選項的模型。
SpinnerModel 物件值的潛在無界序列的模型。
SwingConstants 通常用於在螢幕上定位或定向元件的常數的集合。
UIDefaults.ActiveValue 此類別使使用者能夠在預設表中存儲項,該預設表在每次使用某個 getXXX(key) 方法進行尋找時創建。
UIDefaults.LazyValue 此類別使使用者能夠在預設表中存儲項,該預設表只有在第一次使用某個 getXXX(key) 方法進行尋找時才創建。
WindowConstants 用於控制視窗關閉操作的常數。
 

類別摘要
AbstractAction 此類別提供 JFC Action 介面的預設實作。
AbstractButton 定義按鈕和選單項的一般行為。
AbstractCellEditor  
AbstractListModel 該資料模型的抽象定義提供一個帶內容的 List
AbstractSpinnerModel 此類別提供 SpinnerModel 介面的 ChangeListener 部分,該介面應該適用於最具體的 SpinnerModel 實作。
ActionMap ActionMap 提供從 Object(稱為Action)到 Action 的映射。
BorderFactory 提供標準 Border 物件的處理器類別。
Box 使用 BoxLayout 物件作為其佈局管理器的一個輕量級容器。
Box.Filler 參與佈局但沒有視圖的輕量級元件的實作。
BoxLayout 允許垂直或水平佈置多個元件的佈局管理器。
ButtonGroup 此類別用於為一組按鈕創建一個多斥(multiple-exclusion)作用域。
CellRendererPane 此類別被插入在單元格渲染器與使用它們的元件之間。
ComponentInputMap ComponentInputMap 是與特定 JComponent 相關聯的 InputMap
DebugGraphics 支持圖形除錯的圖形子類別。
DefaultBoundedRangeModel BoundedRangeModel 的一般實作。
DefaultButtonModel Button 元件的資料模型的預設實作。
DefaultCellEditor 表單元格和階層樹單元格的預設編輯器。
DefaultComboBoxModel 組合框的預設模型。
DefaultDesktopManager 此類別是 DesktopManager 的實作。
DefaultFocusManager 此類別已被廢棄,用 1.4 focus API 取代。
DefaultListCellRenderer 呈現列表中的一個項。
DefaultListCellRenderer.UIResource 實作 UIResource 的 DefaultListCellRenderer 的子類別。
DefaultListModel 此類別以鬆散方式實作 java.util.Vector API,它實作 1.1.x 版本的 java.util.Vector,沒有 collection 類別支持,並且在發生更改時通知 ListDataListener
DefaultListSelectionModel 列表選擇的預設資料模型。
DefaultRowSorter<M,I> RowSorter 的一個實作,它圍繞基於網格的資料模型提供排序和過濾操作。
DefaultRowSorter.ModelWrapper<M,I> DefaultRowSorter.ModelWrapper 負責提供由 DefaultRowSorter 進行排序的資料。
DefaultSingleSelectionModel SingleSelectionModel 的一般實作。
FocusManager 從 1.4 focus API 開始,此類別已被廢棄。
GrayFilter 一個圖像過濾器,它通過將圖像轉換成灰度級圖像並增亮圖像中的像素來“禁用”圖像。
GroupLayout GroupLayout 是一個 LayoutManager,它將元件按層次分組,以決定它們在 Container 中的位置。
ImageIcon 一個 Icon 介面的實作,它根據 Image 繪製 Icon。
InputMap InputMap 提供輸入事件(目前只使用 KeyStroke)和 Object 之間的綁定。
InputVerifier 此類別的用途是通過帶文本欄位的 GUI 說明客戶端支持串流暢的焦點導航。
InternalFrameFocusTraversalPolicy 該 FocusTraversalPolicy 可以有選擇地提供確定 JInternalFrame 初始 Component 的演算法。
JApplet java.applet.Applet 的擴展版,它添加了對 JFC/Swing 元件架構的支持。
JButton "push" 按鈕的實作。
JCheckBox 複選框的實作,複選框是一個可以被選定和取消選定的項,它將其狀態顯示給使用者。
JCheckBoxMenuItem 可以被選定或取消選定的選單項。
JColorChooser JColorChooser 提供一個用於允許使用者操作和選擇顏色的控制器窗格。
JComboBox 將按鈕或可編輯欄位與下拉列表組合的元件。
JComponent 該類別是除頂層容器外所有 Swing 元件的基礎類別。
JDesktopPane 用於創建多文檔介面或虛擬桌面的容器。
JDialog 創建對話框視窗的主要類別。
JEditorPane 可編輯各種內容的文本元件。
JFileChooser JFileChooser 為使用者選擇檔案提供了一種簡單的機制。
JFormattedTextField JFormattedTextField 擴展了 JTextField,添加了對格式化任意值的支持,以及一旦使用者編輯了文本就檢索特定物件的支持。
JFormattedTextField.AbstractFormatter JFormattedTextField 所使用的 AbstractFormatter 實例,用於處理從 Object 到 String 和從 String 到 Object 的轉換。
JFormattedTextField.AbstractFormatterFactory JFormattedTextField 使用的 AbstractFormatterFactory 實例,用來獲得 AbstractFormatter 實例,依次使用該實例格式化各個值。
JFrame java.awt.Frame 的擴展版本,該版本添加了對 JFC/Swing 元件架構的支持。
JInternalFrame 提供很多本機窗體功能的輕量級物件,這些功能包括拖動、關閉、變成圖標、調整大小、標題顯示和支持選單欄。
JInternalFrame.JDesktopIcon 此元件表示 JInternalFrame 的圖標化版本。
JLabel 用於短文本字元串或圖像或二者的顯示區。
JLayeredPane JLayeredPane 為 JFC/Swing 容器添加了深度,允許元件在需要時互相重疊。
JList 顯示物件列表並且允許使用者選擇一個或多個項的元件。
JList.DropLocation TransferHandler.DropLocation 的一個子類別,表示 JList 的放置位置 (drop location)。
JMenu 選單的該實作是一個套件含 JMenuItem 的彈出視窗,使用者選擇 JMenuBar 上的項時會顯示該 JMenuItem。
JMenuBar 選單欄的實作。
JMenuItem 選單中的項的實作。
JOptionPane JOptionPane 有助於方便地彈出要求使用者提供值或向其發出通知的標準對話框。
JPanel JPanel 是一般輕量級容器。
JPasswordField JPasswordField 是一個輕量級元件,允許編輯單行文本,其視圖指示鍵入內容,但不顯示原始字元。
JPopupMenu 彈出選單的實作,彈出選單是一個可彈出並顯示一系列選項的小視窗。
JPopupMenu.Separator 彈出與選單有關的分隔符。
JProgressBar 以可視化形式顯示某些任務進度的元件。
JRadioButton 實作一個單選按鈕,此按鈕項可被選擇或取消選擇,並可為使用者顯示其狀態。
JRadioButtonMenuItem 一個單選按鈕選單項的實作。
JRootPane 該輕量級容器由 JFrameJDialogJWindowJAppletJInternalFrame 在後台使用。
JScrollBar 滾動條的實作。
JScrollPane 提供輕量級元件的 scrollable 視圖。
JSeparator JSeparator 為實作分隔線提供了一個通用元件 - 通常用作選單項之間的分隔符,以便將選單項分成幾個邏輯組。
JSlider 一個讓使用者以圖形方式在有界區間內通過移動滑塊來選擇值的元件。
JSpinner 讓使用者從一個有序序列中選擇一個數字或者一個物件值的單行輸入欄位。
JSpinner.DateEditor 其模型為 SpinnerDateModelJSpinner 編輯器。
JSpinner.DefaultEditor 一個針對非常特殊編輯器的簡單基礎類別,該類別在 JFormattedTextField 中顯示模型的當前值的只讀視圖。
JSpinner.ListEditor 其模型為 SpinnerListModelJSpinner 編輯器。
JSpinner.NumberEditor 其模型為 SpinnerNumberModelJSpinner 編輯器。
JSplitPane JSplitPane 用於分隔兩個(只能兩個)Component
JTabbedPane 一個元件,它允許使用者通過單擊具有給定標題和/或圖標的選項卡,在一組元件之間進行切換。
JTable JTable 用來顯示和編輯常規二維單元表。
JTable.DropLocation TransferHandler.DropLocation 的一個子類別,表示 JTable 的放置位置 (drop location)。
JTextArea JTextArea 是一個顯示純文本的多行區域。
JTextField JTextField 是一個輕量級元件,它允許編輯單行文本。
JTextPane 可以用以圖形方式表示的屬性來標記的文本元件。
JToggleButton 具有兩個狀態的(two-state)按鈕的實作。
JToggleButton.ToggleButtonModel ToggleButton 模型。
JToolBar JToolBar 提供了一個用來顯示常用的 Action 或控制元件的元件。
JToolBar.Separator 一個特定於工具欄的分隔符。
JToolTip 用來顯示 Component 的「提示」。
JTree 將分層資料集顯示為輪廓的控制元件。
JTree.DropLocation TransferHandler.DropLocation 的一個子類別,表示 JTree 的放置位置 (drop location)。
JTree.DynamicUtilTreeNode DynamicUtilTreeNode 可以包裹 vectors/hashtables/arrays/strings 並根據需要創建適當的子階層樹節點。
JTree.EmptySelectionModel EmptySelectionModel 是一個不允許選擇任何內容的 TreeSelectionModel
JViewport 用於查看底層資訊的“視口”或“觀察孔”。
JWindow JWindow 是一個容器,可以顯示在使用者桌面上的任何位置。
KeyStroke 表示鍵盤或等效輸入設置上的鍵操作的 KeyStroke。
LayoutFocusTraversalPolicy 根據 Component 的大小、位置和方向對其排序的 SortingFocusTraversalPolicy。
LayoutStyle LayoutStyle 提供有關如何確定元件位置的資訊。
LookAndFeel 顧名思義,LookAndFeel 封裝了一個外觀。
MenuSelectionManager MenuSelectionManager 擁有選單層次結構中的選項。
OverlayLayout 要在彼此頂部安排元件的佈局管理器。
Popup Popup 用於向使用者顯示 Component,它通常位於特定包含層次結構中所有其他 Component 的頂部。
PopupFactory 顧名思義,PopupFactory 用於獲取 Popup 的實例。
ProgressMonitor 監視某個操作的進度的類別。
ProgressMonitorInputStream 監視讀取某些 InputStream 的進度。
RepaintManager 此類別管理重繪請求,以最大限度地降低重繪次數。
RowFilter<M,I> RowFilter 用於從模型中過濾條目,使得這些條目不會在視圖中顯示。
RowFilter.Entry<M,I> 一個傳遞給 RowFilter 實例的 Entry 物件,允許過濾器獲取該條目的資料的值,以確定是否應該顯示該條目。
RowSorter<M> RowSorter 提供排序和過濾的基礎。
RowSorter.SortKey SortKey 描述特定列的排序順序。
ScrollPaneLayout JScrollPane 使用的佈局管理器。
ScrollPaneLayout.UIResource ScrollPaneLayout 的 UI 資源版本。
SizeRequirements 為方便佈局管理器,計算元件的有關大小和位置資訊。
SizeSequence 一個 SizeSequence 物件,它有效地維護一個套件含大小和相應位置的順序列表。
SortingFocusTraversalPolicy 通過對焦點遍歷循環的 Components 按給定 Comparator 排序確定遍歷順序的 FocusTraversalPolicy。
SpinnerDateModel Date 序列的一個 SpinnerModel
SpinnerListModel 其值由陣列或 List 定義的 SpinnerModel 的簡單實作。
SpinnerNumberModel 用於數字序列的 SpinnerModel
Spring Spring 類別的實例將存儲以下三個表示其行為特徵的屬性:minimumpreferredmaximum 值。
SpringLayout SpringLayout 根據一組約束佈置其相關容器的子元件。
SpringLayout.Constraints Constraints 物件將管理元件大小和位置更改方式的約束存儲在 SpringLayout 控制的容器中。
SwingUtilities Swing 實用方法的集合。
SwingWorker<T,V> 在專用執行緒中執行長時間 GUI 交互任務的抽象類別。
Timer 在指定時間間隔觸發一個或多個 ActionEvent
ToolTipManager 管理系統中的所有 ToolTips
TransferHandler 此類別用於處理往返於 Swing 元件的 Transferable 的傳輸。
TransferHandler.DropLocation 表示放置的資料 (dropped data) 應該插入的位置。
TransferHandler.TransferSupport 此類別封裝剪貼板或拖放傳輸的所有相關詳細資訊,並且還允許自定義拖放過程的各方面。
UIDefaults Swing 元件的預設值表。
UIDefaults.LazyInputMap LazyInputMap 將在其 createValue 方法中創建一個 InputMap
UIDefaults.ProxyLazyValue 此類別提供一個可用於延遲載入要創建實例類別的 LazyValue 的實作。
UIManager UIManager 管理當前外觀、可用外觀集合、外觀更改時被通知的 PropertyChangeListeners、外觀預設值以及獲取各種預設值的便捷方法。
UIManager.LookAndFeelInfo 為了配置選單或為了初始應用程序設置而提供關於已安裝的 LookAndFeel 的少量資訊。
ViewportLayout JViewport 的預設佈局管理器。
 

列舉摘要
DropMode 放置網要,用於確定元件在拖放過程中追蹤和指示放置位置 (drop location) 的方法。
GroupLayout.Alignment ParallelGroup 能夠對齊其子元素的可能方式的列舉。
JTable.PrintMode 用於列印 JTable 的列印網要。
LayoutStyle.ComponentPlacement ComponentPlacement 是兩個元件相對於彼此的可能放置方式的列舉。
RowFilter.ComparisonType 由某些預設 RowFilter 支持的可能比較值的列舉。
SortOrder SortOrder 是可能排序順序的列舉。
SwingWorker.StateValue state 綁定 (bound) 屬性的值。
 

異常摘要
UnsupportedLookAndFeelException 指示在使用者系統上不存在請求的外觀管理類別的異常。
 

軟體套件 javax.swing 的描述

提供一組“輕量級”(全部是 Java 語言)元件,盡量讓這些元件在所有平臺上的工作方式都相同。有關使用這些元件的開發人員指南,請參閱 Creating a GUI with JFC/Swing,該內容在 The Java Tutorial 的結尾處。有關其他參考資料,請參閱相關文檔

Swing 的執行緒策略

通常 Swing 不是執行緒安全的。除非另行說明,否則所有 Swing 元件及相關類別都必須在事件排程執行緒上存取。

典型的 Swing 應用程序執行處理以回應使用者動作所產生的事件。例如,單擊 JButton 通知所有添加到 JButtonActionListener。由於使用者動作所產生的所有事件都在排程執行緒上指派,所以大部分開發人員不受該限制的影響。

但是,影響存在於建構以及顯示 Swing 的應用程序中。對應用程序的 main 方法或 Applet 中方法的調用不在事件排程執行緒上調用。因此,建構和顯示應用程序或 applet 時,必須注意要將控制元件轉移到事件排程執行緒。轉移控制元件和開始處理 Swing 的首選方法是使用 invokeLaterinvokeLater 方法安排 Runnable 在事件排程執行緒上處理。以下兩個範例都同樣很好地用於轉移控制元件和啟動 Swing 應用程序:

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(args));
    }
}
或:
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 中,尤其是 How to Use Threads 一節找到關於此主題的更多資訊。

相關文檔

有關概觀、教程、範例、指南和其他文檔的資訊,請參閱:


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only