パッケージ javax.swing
Swingのスレッド・ポリシー
通常、Swingはスレッドに対して安全ではありません。 すべてのSwingコンポーネントと関連クラスには、特に説明がないかぎり、イベント・ディスパッチ・スレッド上でアクセスしてください。
通常のSwingアプリケーションは、ユーザーのジェスチャによって生成されたイベントに応じて、処理を実行します。 たとえば、ユーザーがJButton
をクリックすると、JButton
に追加されたすべてのActionListeners
に通知が送信されます。 ユーザーのジェスチャによって生成されたすべてのイベントはイベント・ディスパッチ・スレッド上でディスパッチされるので、開発者が制限の影響を受けることは、ほとんどありません。
ただし、Swingアプリケーションの構築時と表示時には影響があります。 イベント・ディスパッチ・スレッド上では、アプリケーションのmain
メソッドの呼出しやApplet
内のメソッドの呼出しは行われません。 このため、アプリケーションやアプレットの構築時および表示時には、イベント・ディスパッチ・スレッドに制御を渡していることを確認してください。 制御を渡し、Swingの処理を開始するためには、invokeLater
を使用することをお薦めします。 invokeLater
メソッドは、Runnable
がイベント・ディスパッチ・スレッド上で処理されるようにスケジュールします。 次に、Swingアプリケーションに制御を渡し、Swingアプリケーションを起動する例を2つ示します。どちらの方法も適切です。
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
の変更は必ずイベント・ディスパッチ・スレッド上で行うようにしてください。 別のスレッド上でモデルを変更した場合、例外が発生し、画面の表示が崩れる可能性があります。
イベント・ディスパッチ・スレッド上で実行すると、UIに直ちに更新を加えるのは一般的に安全ですが、例外があります : UIリスナーが保留中の変更を反映するようにUIが更新される前にUIをさらに変更しようとすると、UIが正しくレンダリングされないことがあります。 これは、アプリケーションがインストールされたリスナーが、モデル構造の変更を引き起こすイベントにレスポンスしてUIを更新する必要がある場合に発生します。 リスナーが呼び出される順序が保証されていないため、最初にコンポーネント・インストール・リスナーがこの変更を処理できるようにすることが重要です。 解決策は、アプリケーション・リスナーがSwingUtilities.invokeLater
を使用して変更を行い、コンポーネントによってインストールされたすべてのモデル・リスナーの処理後にUIレンダリングの変更が行われるようにすることです。
すべてのイベントはイベント・ディスパッチ・スレッド上で配信されるので、イベント処理時に注意してください。 特に、イベント・ディスパッチ・スレッド上で、ネットワーク入出力や計算量の多い処理など、時間のかかるタスクを実行すると、その他のイベントのディスパッチがブロックされます。 イベント・ディスパッチ・スレッドがブロックされている間、アプリケーションはユーザーの入力に一切反応しなくなります。 Swingの使用時にこのような処理を実行する場合は、SwingWorker
の説明に従うことをお勧めします。
このトピックの詳細は、『The Swing Tutorial』(特に Concurrency in Swingのセクション)を参照してください。
関連ドキュメント
概要、チュートリアル、例、ガイド、その他のマニュアルについては、次を参照してください。- The Swing Connection
- The Java Tutorial
- Java Developer Connection SMのOnline Training
- Java Foundation Classes (JFC)ホーム・ページ
-
インタフェースのサマリー インタフェース 説明 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の子を1つ持つJDialog、JFrame、JWindow、JApplet、JInternalFrameなどのコンポーネントによって実装されます。Scrollable JScrollPaneなどのスクロール・コンテナに情報を提供するインタフェースです。ScrollPaneConstants JScrollPaneコンポーネントとともに使われる定数です。SingleSelectionModel インデックス付き選択範囲を1つだけサポートするモデルです。SpinnerModel 要素を無限に作成できるオブジェクト値シーケンスを表すモデルです。SwingConstants 一般的には画面上でコンポーネントの配置および方向指定を行うために使用する定数のコレクションです。UIClientPropertyKey このインタフェースは、UIによって設定されたJComponent
のクライアント・プロパティのタグ・キーにのみ使用され、L&Fの変更と直列化でクリアする必要があります。UIDefaults.ActiveValue このクラスを使うと、getXXX(key)
メソッドで検索されるたびに構築されるデフォルトのテーブルにエントリを格納できます。UIDefaults.LazyValue このクラスを使うと、getXXX(key)
メソッドではじめて検索されるまで構築されないデフォルトのテーブルにエントリを格納できます。WindowConstants ウィンドウのクローズ操作を制御する定数です。 -
クラスのサマリー クラス 説明 AbstractAction このクラスは、JFCのAction
インタフェースのデフォルト実装を提供します。AbstractButton ボタンおよびメニュー項目の共通動作を定義します。AbstractCellEditor CellEditors
の基底クラスであり、getCellEditorValue()
を除くCellEditor
インタフェースのメソッドのデフォルトの実装を提供します。AbstractListModel<E> List
にその内容を提供するデータ・モデルの抽象定義です。AbstractSpinnerModel このクラスでは、ほとんどの具象SpinnerModel実装に適するSpinnerModelインタフェースのChangeListener部分を提供します。ActionMap ActionMap
は、キーまたはAction
名と呼ばれるObject
からAction
へのマップを提供します。BorderFactory 標準的なBorder
オブジェクトを提供するためのファクトリ・クラスです。Box BoxLayoutオブジェクトをレイアウト・マネージャとして使う軽量なコンテナです。Box.Filler レイアウトに含まれるがビューを持たない軽量コンポーネントの実装です。BoxLayout 複数のコンポーネントを、垂直方向にも水平方向にも配置できるようにする、レイアウト・マネージャです。ButtonGroup 複数のボタンのセットに多重排他スコープを設定するために使用します。CellRendererPane このクラスは、セル・レンダラとそれを使うコンポーネントの間に挿入されます。ComponentInputMap ComponentInputMap
は、特定のJComponent
に関連付けられているInputMap
です。DebugGraphics グラフィックスのデバッグをサポートするGraphicsのサブクラスです。DefaultBoundedRangeModel BoundedRangeModelのジェネリック実装です。DefaultButtonModel Button
コンポーネントのデータ・モデルのデフォルト実装です。DefaultCellEditor テーブルとツリー・セルのデフォルト・エディタです。DefaultComboBoxModel<E> コンボボックスのデフォルト・モデルです。DefaultDesktopManager DesktopManager
の実装です。DefaultFocusManager このクラスは1.4 focus APIでは現在使用されていません。DefaultListCellRenderer リスト内の項目をレンダリングします。DefaultListCellRenderer.UIResource UIResourceを実装するDefaultListCellRendererのサブクラスです。DefaultListModel<E> このクラスはjava.util.Vector
APIを柔軟に実装します。1.1.xのjava.util.Vector
を実装しますが、コレクション・クラスはサポートせず、変更発生時にはListDataListener
に通知します。DefaultListSelectionModel リスト選択のデフォルト・データ・モデルです。DefaultRowSorter<M,I> グリッド・ベースのデータ・モデルのソートやフィルタの適用を行うRowSorter
の実装です。DefaultRowSorter.ModelWrapper<M,I> DefaultRowSorter.ModelWrapper
は、DefaultRowSorter
でソートされるデータを提供します。DefaultSingleSelectionModel SingleSelectionModelのジェネリック実装です。FocusManager このクラスは1.4 focus APIでは現在使用されていません。GrayFilter イメージをグレー・スケールに変換し、イメージ内のピクセルの明度を上げることによって、イメージを「無効にする」イメージ・フィルタです。GroupLayout GroupLayout
は、Container
内に配置するためにコンポーネントを階層的にグループ化するLayoutManager
です。ImageIcon アイコンをイメージからペイントするIconインタフェースの実装です。InputMap InputMap
は、入力イベント(現在はKeyStroke
のみ使用)とObject
の間のバインディングを提供します。InputVerifier このクラスは、Swingコンポーネントの検証メカニズムを提供します。InternalFrameFocusTraversalPolicy JInternalFrameの初期Componentを判定するためのアルゴリズムを任意に提供できるFocusTraversalPolicyです。JApplet 非推奨。 Applet APIは推奨されていません。JButton 「プッシュ」ボタンの実装です。JCheckBox チェックボックス(選択または選択解除が可能で、その状態をユーザーに表示する項目)の実装です。JCheckBoxMenuItem 選択または選択解除できるメニュー項目です。JColorChooser JColorChooser
は、ユーザーが色を操作したり、選択したりできるように設計されたコントロールのペインを提供します。JComboBox<E> ボタンまたは編集可能フィールドとドロップ・ダウン・リストを組み合わせたコンポーネントです。JComponent トップ・レベルのコンテナを除くすべてのSwingコンポーネントの基底クラスです。JDesktopPane マルチドキュメント・インタフェースまたは仮想デスクトップを生成するコンテナです。JDialog ダイアログ・ウィンドウを作成するためのメイン・クラスです。JEditorPane さまざまな種類のコンテンツを編集するためのテキスト・コンポーネントです。JFileChooser JFileChooser
は、ユーザーがファイルを選択するための単純なメカニズムを提供します。JFormattedTextField JFormattedTextField
はJTextField
を拡張して、任意の値をフォーマットしたり、ユーザーがテキストを編集したあとに特定のオブジェクトを取得したりするためのサポートを追加します。JFormattedTextField.AbstractFormatter AbstractFormatter
のインスタンスは、ObjectからStringおよびStringからObjectへの変換を処理するためにJFormattedTextField
で使用されます。JFormattedTextField.AbstractFormatterFactory AbstractFormatterFactory
のインスタンスはJFormattedTextField
で使用され、値のフォーマットに使用されるAbstractFormatter
のインスタンスを取得します。JFrame JFC/Swingコンポーネント・アーキテクチャのサポートを追加するjava.awt.Frame
の拡張バージョン。JInternalFrame ネイティブなフレームに、ドラッグ、クローズ、アイコン化、サイズ変更、タイトル表示、およびメニュー・バーのサポートなど、多くの機能を提供する軽量オブジェクトです。JInternalFrame.JDesktopIcon このコンポーネントは、JInternalFrame
のアイコン化されたバージョンを表します。JLabel 短いテキスト文字列やイメージの表示領域です。両方を一緒に表示することもできます。JLayer<V extends Component> JLayer
は、さまざまな高度なペイント効果を実装したり、そのボーダー内で生成されるすべてのAWTEvent
の通知を受信したりするために使用できる、Swingコンポーネントのための汎用のデコレータです。JLayeredPane JLayeredPane
はJFC/Swingコンテナに深さを追加し、コンポーネントが必要に応じて互いにオーバーラップできるようにします。JList<E> オブジェクトのリストを表示し、ユーザーが1つまたは複数のオブジェクトを選択できるようにするコンポーネントです。JList.DropLocation TransferHandler.DropLocation
のサブクラスであり、JList
のドロップ位置を表します。JMenu メニュー(ユーザーがJMenuBar
の項目を選択したときに表示される、JMenuItem
を含むポップアップ・ウィンドウ)の実装です。JMenuBar メニュー・バーの実装です。JMenuItem メニューの項目の実装です。JOptionPane JOptionPane
は、ユーザーに値の入力を求めたり、何らかの情報を通知したりするための標準のダイアログ・ボックスを容易にポップアップできるようにします。JPanel JPanel
は、汎用の軽量コンテナです。JPasswordField JPasswordField
は、1行のテキストの編集を可能にする軽量コンポーネントです。何かが入力されたことはビューに示されますが、元の文字は表示されません。JPopupMenu ポップアップ・メニュー(一連の選択肢をポップアップおよび表示する小さなウィンドウ)の実装です。JPopupMenu.Separator ポップアップ・メニュー固有のセパレータです。JProgressBar 一部のタスクの進捗状況を視覚的に表示するコンポーネントです。JRadioButton ラジオ・ボタン(選択または選択解除が可能で、その状態をユーザーに表示する項目)の実装です。JRadioButtonMenuItem ラジオ・ボタン・メニュー項目の実装です。JRootPane JFrame
、JDialog
、JWindow
、JApplet
、およびJInternalFrame
によって内部的に使用される軽量コンテナ。JScrollBar スクロール・バーの実装です。JScrollPane 軽量コンポーネントのスクロール可能なビューを提供します。JSeparator JSeparator
は、区切り線を実装するための汎用的なコンポーネントを提供します。もっとも一般的には、メニュー項目を論理的なグループに分割するための項目間の区切り線として使用されます。JSlider ユーザーが指定された区間内でノブをスライドすることによりグラフィカルに値を選択できるようにするコンポーネントです。JSpinner ユーザーが、順序付けられたシーケンスから数またはオブジェクトを選択できるようにする単一行の入力フィールドです。JSpinner.DateEditor モデルがSpinnerDateModel
であるJSpinner
のエディタ。JSpinner.DefaultEditor JFormattedTextField
を使用してモデルの現在の値の読取り専用ビューを表示する、より特殊なエディタの単純な基底クラス。JSpinner.ListEditor モデルがSpinnerListModel
であるJSpinner
のエディタ。JSpinner.NumberEditor モデルがSpinnerNumberModel
であるJSpinner
のエディタ。JSplitPane JSplitPane
は、2つ(2つだけ)のComponent
を分割するために使用されます。JTabbedPane 指定されたタイトルやアイコンを持つタブをクリックすることにより、ユーザーがコンポーネントのグループを切り替えられるようにするコンポーネントです。JTable JTable
は、セルの通常の2次元テーブルを表示および編集するために使用されます。JTable.DropLocation TransferHandler.DropLocation
のサブクラスであり、JTable
のドロップ位置を表します。JTextArea JTextArea
は、プレーン・テキストを表示する複数行の領域です。JTextField JTextField
は、1行のテキストの編集を可能にする軽量コンポーネントです。JTextPane グラフィックで表現される属性でマークアップできるテキスト・コンポーネントです。JToggleButton 2つの状態を持つボタンの実装です。JToggleButton.ToggleButtonModel ToggleButtonモデルですJToolBar JToolBar
は、一般的に使用されるAction
またはコントロールを表示するのに役立つコンポーネントを提供します。JToolBar.Separator ツールバー独自のセパレータです。JToolTip Componentの「ヒント」を表示するために使います。JTree JTree.DropLocation TransferHandler.DropLocation
のサブクラスであり、JTree
のドロップ位置を表します。JTree.DynamicUtilTreeNode DynamicUtilTreeNode
は、ベクター、ハッシュ・テーブル、配列、および文字列をラップし、必要に応じて適切な子ツリー・ノードを作成できます。JTree.EmptySelectionModel EmptySelectionModel
は、何の選択も許可しないTreeSelectionModel
です。JViewport ベースとなる情報を見るために使用する「ビュー・ポート(窓)」です。JWindow JWindow
は、ユーザーのデスクトップ上のどこにでも表示できるコンテナです。KeyStroke KeyStrokeは、キーボードまたは同等の入力デバイスのキー・アクションを表します。LayoutFocusTraversalPolicy サイズ、位置、方向に基づいてComponentをソートするSortingFocusTraversalPolicyです。LayoutStyle LayoutStyle
は、コンポーネントの配置に関する情報を提供します。LookAndFeel LookAndFeel
は、その名前が示す通り、Look & Feelをカプセル化します。MenuSelectionManager MenuSelectionManagerは、メニュー階層での選択を所有します。OverlayLayout コンポーネントを互いの上に重なり合うように配置するレイアウト・マネージャです。Popup Popupは、ユーザーにComponent
を表示するために使用されます。通常、Component
は、特定の包含関係の階層に存在するほかのすべてのComponentの上に配置されます。PopupFactory PopupFactory
は、その名前が示す通り、Popup
のインスタンスを取得するために使用します。ProgressMonitor 処理の進捗を監視するクラスです。ProgressMonitorInputStream InputStreamからの読込みの進捗を監視します。RepaintManager このクラスは再ペイント要求を管理し、コンポーネント・ツリーのメンバーに対する複数の要求を1回の再ペイントにまとめることなどにより、再ペイントの回数を最小限に抑えます。RowFilter<M,I> RowFilter
は、エントリをモデルからフィルタ・リングして、ビューに表示されないようにするために使用します。RowFilter.Entry<M,I> Entry
オブジェクトがRowFilter
のインスタンスに渡されると、フィルタはエントリのデータ値を取得し、エントリを表示するかどうかを判断できます。RowSorter<M> RowSorter
は、ソートとフィルタの基盤を提供します。RowSorter.SortKey SortKeyは、特定の列のソート順序を記述します。ScrollPaneLayout JScrollPane
が使用するレイアウト・マネージャです。ScrollPaneLayout.UIResource ScrollPaneLayout
のUIリソース・バージョンです。SizeRequirements レイアウト・マネージャの便宜のために、コンポーネントのサイズと位置についての情報を計算します。SizeSequence SizeSequence
オブジェクトは、サイズおよび対応する位置の、順序付けされたリストを効率的に維持します。SortingFocusTraversalPolicy 指定されたComparatorに基づいてフォーカス・トラバーサル・サイクルのComponentをソートすることによって、トラバーサル順序を決定するFocusTraversalPolicyです。SpinnerDateModel Date
のシーケンスのSpinnerModel
です。SpinnerListModel 配列またはList
によって値を定義するSpinnerModel
の単純な実装です。SpinnerNumberModel 数値のシーケンスを表すSpinnerModel
です。Spring Spring
クラスのインスタンスは、その動作を特徴付ける3つのプロパティ(値はminimum、preferred、およびmaximum)を保持します。SpringLayout SpringLayout
は、関連付けられているコンテナの子を一連の制約に従ってレイアウトします。SpringLayout.Constraints Constraints
オブジェクトは、SpringLayout
が制御するコンテナ内のコンポーネントのサイズ変更方法および位置変更方法を決定する制約を保持します。SwingUtilities Swingのユーティリティ・メソッドのコレクションです。SwingWorker<T,V> GUIとやりとりする時間のかかるタスクを、バックグラウンド・スレッドで実行するためのabstractクラスです。Timer 指定された間隔で、1つ以上のActionEvent
をトリガーします。ToolTipManager システム内のすべてのToolTips
を管理します。TransferHandler このクラスは、Swingコンポーネントに対するTransferable
の転送処理に使用します。TransferHandler.DropLocation ドロップされたデータを挿入する位置を表します。TransferHandler.TransferSupport このクラスには、クリップボードによる転送またはドラッグ&ドロップによる転送に関連する詳細情報をすべてカプセル化する機能と、ドラッグ&ドロップ操作をカスタマイズする機能があります。UIDefaults Swingコンポーネントのデフォルト値のテーブルです。UIDefaults.LazyInputMap LazyInputMap
は、createValue
メソッドでInputMap
を作成します。UIDefaults.ProxyLazyValue このクラスは、生成されるインスタンスのClassのロードを遅延させるLazyValue
の実装を提供します。UIManager UIManager
は、現在のLook & Feel、使用可能なLook & Feelのセット、Look & Feelの変更時に通知を受けるPropertyChangeListeners
、Look & Feelのデフォルト値、およびさまざまなデフォルト値を取得するために使用する簡易メソッドを管理します。UIManager.LookAndFeelInfo メニューの設定またはアプリケーションの初期設定のための、インストール済みLookAndFeel
に関する概要を説明します。ViewportLayout JViewport
のデフォルトのレイアウト・マネージャです。 -
列挙型のサマリー 列挙型 説明 DropMode メソッドの特定に使用するドロップ・モードです。ドラッグ&ドロップのときに、コンポーネントは、このメソッドを使ってドロップの位置を追跡して示します。GroupLayout.Alignment ParallelGroup
がその子を配置するときに選択できる方法の列挙です。JTable.PrintMode JTable
の出力に使用する出力モードです。LayoutStyle.ComponentPlacement ComponentPlacement
は、2つのコンポーネントを相互に関連付けて配置する場合に使用できる方法の列挙です。RowFilter.ComparisonType 一部のデフォルトのRowFilter
でサポートされる、値比較に使用可能な値の列挙です。SortOrder SortOrderは、可能なソート順序の列挙です。SwingWorker.StateValue state
バウンド・プロパティの値です。 -
例外のサマリー 例外 説明 UnsupportedLookAndFeelException 要求されたLook & Feelの管理クラスがユーザーのシステム上に存在しないことを示す例外です。 -
注釈型のサマリー 注釈型 説明 SwingContainer 自動的に生成されたBeanInfo
クラスのスイング関連情報を指定するために使用される注釈。