Swing

目次

Swingとは

Swing(スィング)は、JDK1.2 でサポートされた AWT よりも新しい GUIコンポーネントです。AWT に対して以下のような特徴があります。

AWT に対応する Swing の部品には次のようなものがあります。

カテゴリ種類AWTSwing
ウィンドウフレームFrameJFrame
ダイアログDialogJDialog
部品ボタンButtonJButton
トグルボタン×JToggleButton
ラベルLabelJLabel
テキストフィールドTextFieldJTextField
テキストエリアTextAreaJTextArea
チェックボックスCheckboxJCheckBox
ラジオボタン×JRadioButton
コンボボックスChoiceJComboBox
リストListJList
スクロールバーScrollbarJScrollBar
テーブル×JTable
ツリー×JTree
プログレスバー×JProgressBar
ペインパネルPanelJPanel
スクロールペインScrollPaneJScrollPane
タブペイン×JTabbedPane
キャンバスCanvas
メニューメニューバーMenuBarJMenuBar
ツールバー×JToolBar
ステータスバー×
ポップアップメニューPopupMenuJPopupMenu

フレーム(JFrame)

サンプル

JFrameTest.java
JFrame

説明

Swing では フレーム の作成に、Frame の代わりに JFrame を使用します。下記は、JFrame を表示するだけのシンプルなサンプルです。

JFrameTest.java
import java.awt.*;
import javax.swing.*;

class JFrameTest extends JFrame {
    JFrameTest() {
        getContentPane().setLayout(new FlowLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("JFrameTest");
        setSize(200, 100);
        setVisible(true);
    }
    public static void main(String [] args) {
        new JFrameTest();
    }
}

AWT の Frame サンプルと比べると下記のような違いがあります。

ボタン(JButton)

サンプル

JButtonTest.java
JButton

説明

ボタンJButton クラスを用います。

補足

トグルボタン(JToggleButton)

サンプル

JToggleButtonTest.java
JToggleButton

説明

トグルボタン は、1回ボタンを押すごとに、オン・オフの状態が切り替わるボタンです。JToggleButton クラスを用います。

補足

ラベル(JLabel)

サンプル

JLabelTest.java
JLabel

説明

ラベル には Label クラスを用います。

補足

テキストフィールド(JTextField)

サンプル

JTextFieldTest.java
JTextField

説明

テキストフィールド には JTextField クラスを用います。

補足

テキストエリア(JTextArea)

サンプル

JTextAreaTest.java
JTextArea

説明

テキストエリア には JTextArea クラスを用います。

補足

チェックボックス(JCheckBox)

サンプル

JCheckBoxTest.java
JCheckBox

説明

チェックボックス には JCheckBox クラスを用います。ActionListener でもチェックボックスをクリックされたことを監視可能ですが、チェックボックスのオン・オフ変化を確実に監視するには、ChangeListener(javax.swing.event)を用いるのが無難です。ButtonGroup によるグルーピングも可能です。

補足

ラジオボタン(JRadioButton)

サンプル

JRadioButtonTest.java
JRadioButton

説明

ラジオボタン には JRadioButton クラスを用います。ButtonGroup でグループ化することにより、グループ内のオン状態のボタンが常にひとつになるように制御することができます。

補足

コンボボックス(JComboBox)

サンプル

JComboBoxTest.java
JComboBox

説明

コンボボックス には JComboBox クラスを用います。キーボードで選択操作する場合、キー移動する度に actionPerformed() が呼ばれるので注意してください。

補足

リスト(JList)

サンプル

JListTest.java
JList

説明

リスト には JList クラスを用います。

補足

スクロールバー(JScrollBar)

サンプル

JScrollBarTest.java
JScrollBar

説明

スクロールバー には JScrollBar クラスを用います。テキストエリアや、テーブルなどの部品にスクロールバーをつけるには、JScrollBar ではなく JScrollPane を用います。

補足

プログレスバー(JProgressBar)

サンプル

JProgressBarTest.java
JProgressBar

説明

プログレスバー には JProgressBar クラスを用います。時間のかかる処理の経過状況などを表示するのに用いられます。

補足

テーブル(JTable)

サンプル

JTableTest.java
DefaultTableModelTest.java
JTable

説明

テーブル には JTable クラスを用います。通常のテーブルは、セルの編集は可能ですが、行や列を追加・削除することができません。行や列を追加削除するには TableModel を用います。基本的な TableModel として、DefaultTableModel を用いた例をサンプルに示しています。

補足

ツリー(JTree)

サンプル

JTreeTest.java
JTree

説明

ツリー を作成するには JTree クラスを用います。

補足

メニューバー(JMenuBar)

サンプル

JMenuBarTest.java
JMenuBar

説明

メニュー を作成するには、主に下記の 4つのクラスを用います。

クラス説明
JMenuBarメニューバー
JMenuメニュー。子アイテムを持つメニュー項目。
JMenuItemメニューアイテム。子アイテムを持たないメニュー項目。
JCheckBoxMenuItemチェックタイプのメニューアイテム。

MenuBar の場合は Menu と CheckBoxMenuItem にアクションリスナーを追加していましたが、JMenuBar の場合はそれぞれのメニューアイテムにアクションリスナーを登録します。

補足

ツールバー(JToolBar)

サンプル

JToolBarTest.java
JToolBar

説明

ツールバー を作成するには JToolBar クラスを用います。ツールバーの上には、JButton で作成したボタンなどを配置することができます。

ステータスバー(JStatusBar)

サンプル

JStatusBarTest.java
JStatusBar

説明

Swing ではステータスバー専用の部品はサポートされていません。代わりに、JLabel で生成したラベルを BorderLayout.SOUTH に貼り付けることで、ステータスバーを模倣することができます。

スクロールペイン(JScrollPane)

サンプル

JScrollPaneTest.java
JScrollPane

説明

JTextArea、JList、JTree などの部品に スクロールバー をつけるには、スクロールペイン(JScrollPane)の中にこれらの部品を貼り付けます。

タブペイン(JTabbedPane)

サンプル

JTabbedPaneTest.java
JTabbedPane

説明

画面をタブ付きのペインで切り替えるには、タブペイン(JTabbedPane)を用います。

補足

画面を分割する(JSplitPane)

サンプル

JSplitPaneTest.java
JSplitPane

説明

画面を左右や上下に分割するには、スプリットペイン(JSplitPane)を用います。

補足

ダイアログ(JDialog)

サンプル

JDialogTest.java
JDialog

説明

ダイアログ を表示するには JDialog を用います。通常、JDialog のサブクラスを作成し、そのサブクラスのインスタンスを生成してダイアログを表示します。

補足

ポップアップメニュー(JPopupMenu)

サンプル

JPopupMenuTest.java
JPopupMenu

説明

ポップアップメニュー を表示するには JPopupMenu を用います。

補足

パネル(JPanel)

サンプル

JPanelTest.java
JPanel

説明

パネル(JPanel)は、より柔軟なレイアウトを実現する際に用いられます。フレームやダイアログ上に複数のパネルを配置し、パネル内に部品を配置することにより、通常の XxxxLayout では表現できないレイアウトを実現します。「パネルによるレイアウト」を参照してください。

ルック&フィールの変更

サンプル

LookAndFeelTest.java
Metal Windows Motif
Metal Windows Motif

説明

Swing では、GUI のルック&フィールを動的に変更することができます。現状では、Metalモード、Windowsモード、Motifモードがサポートされています。