<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<title>とほほのJava入門</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h3>Swing</h3>
<a href="index.htm">[戻る]</a>
<a href="awt.htm">[前に]</a>
<a href="layout.htm">[次に]</a>
<h4><a name="Swing">■ Swingとは</a></h4>
<div class=i>
<p><b>Swing</b>(<b>スィング</b>)は、JDK1.2 でサポートされた AWT よりも新しい GUIコンポーネントです。AWT に対して以下のような特徴があります。</p>
<ul>
<li>OSが変わっても見栄えが変わらない。
<li>AWTよりも重い。
<li>AWT での部品名に J をつけたものが多い。
</ul>
<p>AWT に対応する Swing の部品には次のようなものがあります。</p>
<table border=1 bordercolor="#808080" bordercolordark="#ffffff" cellspacing=0>
<tr bgcolor="#c0c0c0"><th>カテゴリ</th><th>種類</th><th>AWT</th><th>Swing</th></tr>
<tr><td rowspan=2>ウィンドウ</td><td>フレーム</td><td><a href="awt.htm#Frame">Frame</a></td><td><a href="#JFrame">JFrame</a></td></tr>
<tr><td>ダイアログ</td><td><a href="awt.htm#Dialog">Dialog</a></td><td><a href="#JDialog">JDialog</a></td></tr>
<tr><td rowspan=13>部品</td><td>ボタン</td><td><a href="awt.htm#Button">Button</a></td><td><a href="#JButton">JButton</a></td></tr>
<tr><td>トグルボタン</td><td>×</td><td><a href="#JToggleButton">JToggleButton</a></td></tr>
<tr><td>ラベル</td><td><a href="awt.htm#Label">Label</a></td><td><a href="#JLabel">JLabel</a></td></tr>
<tr><td>テキストフィールド</td><td><a href="awt.htm#TextField">TextField</a></td><td><a href="#JTextField">JTextField</a></td></tr>
<tr><td>テキストエリア</td><td><a href="awt.htm#TextArea">TextArea</a></td><td><a href="#JTextArea">JTextArea</a></td></tr>
<tr><td>チェックボックス</td><td><a href="awt.htm#Checkbox">Checkbox</a></td><td><a href="#JCheckBox">JCheckBox</a></td></tr>
<tr><td>ラジオボタン</td><td>×</td><td><a href="#JRadioButton">JRadioButton</a></td></tr>
<tr><td>コンボボックス</td><td><a href="awt.htm#Choice">Choice</a></td><td><a href="#JComboBox">JComboBox</a></td></tr>
<tr><td>リスト</td><td><a href="awt.htm#List">List</a></td><td><a href="#JList">JList</a></td></tr>
<tr><td>スクロールバー</td><td><a href="awt.htm#Scrollbar">Scrollbar</a></td><td><a href="#JScrollBar">JScrollBar</a></td></tr>
<tr><td>テーブル</td><td>×</td><td><a href="#JTable">JTable</a></td></tr>
<tr><td>ツリー</td><td>×</td><td><a href="#JTree">JTree</a></td></tr>
<tr><td>プログレスバー</td><td>×</td><td><a href="#JProgressBar">JProgressBar</a></td></tr>
<tr><td rowspan=4>ペイン</td><td>パネル</td><td>Panel</td><td><a href="#JPanel">JPanel</a></td></tr>
<tr><td>スクロールペイン</td><td>ScrollPane</td><td><a href="#JScrollPane">JScrollPane</a></td></tr>
<tr><td>タブペイン</td><td>×</td><td><a href="#JTabbedPane">JTabbedPane</a></td></tr>
<tr><td>キャンバス</td><td><a href="awt.htm#Canvas">Canvas</a></td><td>?</td></tr>
<tr><td rowspan=4>メニュー</td><td>メニューバー</td><td><a href="awt.htm#MenuBar">MenuBar</td><td><a href="#JMenuBar">JMenuBar</a></td></tr>
<tr><td>ツールバー</td><td>×</td><td><a href="#JToolBar">JToolBar</a></td></tr>
<tr><td>ステータスバー</td><td>×</td><td><a href="#JStatusBar">※</a></td></tr>
<tr><td>ポップアップメニュー</td><td>PopupMenu</td><td><a href="#JPopupMenu">JPopupMenu</a></td></tr>
</table>
</div>
<h4><a name="JFrame">■ フレーム(JFrame)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JFrameTest.java">JFrameTest.java</a></div>
<div><img src="image/JFrame.jpg" width=200 height=100 alt="JFrame"></div>
<h5>【説明】</h5>
<p>Swing では <b>フレーム</b> の作成に、Frame の代わりに <b>JFrame</b> を使用します。下記は、JFrame を表示するだけのシンプルなサンプルです。</p>
<div class=f>§JFrameTest.java</div>
<pre class=c>
import java.awt.*;
<em>import javax.swing.*;</em>
class JFrameTest <em>extends JFrame</em> {
JFrameTest() {
<em>getContentPane().</em>setLayout(new FlowLayout());
<em>setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</em>
setTitle("JFrameTest");
setSize(200, 100);
setVisible(true);
}
public static void main(String [] args) {
new JFrameTest();
}
}
</pre>
<p>AWT の Frame サンプルと比べると下記のような違いがあります。</p>
<ul>
<li>javax.swing.* をインポートする。
<li>JFrame のサブクラスとして実装する。
<li>Button は JButton など、Swing 部品には J がつくものが多い。
<li>部品配置やレイアウトは JFrame に直接ではなく、getContentPane() で取得したペインに対して行う。
<li>setDefaultCloseOperation()でウィンドウを閉じる処理を簡単に記述できる。
</ul>
</div>
<h4><a name="JButton">■ ボタン(JButton)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JButtonTest.java">JButtonTest.java</a></div>
<div><img src="image/JButton.jpg" width=200 height=100 alt="JButton"></div>
<h5>【説明】</h5>
<p><b>ボタン</b> は <b>JButton</b> クラスを用います。</p>
<h5>【補足】</h5>
<ul>
<li>押されたことを監視する → ActionListener
<li>ボタンにアクションコマンド名を登録する → setActionCommand()
<li>押下時にアクションコマンド名を得る → e.getActionCommand()
</ul>
</div>
<h4><a name="JToggleButton">■ トグルボタン(JToggleButton)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JToggleButtonTest.java">JToggleButtonTest.java</a></div>
<div><img src="image/JToggleButton.jpg" width=200 height=100 alt="JToggleButton"></div>
<h5>【説明】</h5>
<p><b>トグルボタン</b> は、1回ボタンを押すごとに、オン・オフの状態が切り替わるボタンです。<b>JToggleButton</b> クラスを用います。</p>
<h5>【補足】</h5>
<ul>
<li>オン・オフの状態変化を監視する → ChangeListener
<li>オンかオフか判断する → isSelected()
</ul>
</div>
<h4><a name="JLabel">■ ラベル(JLabel)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JLabelTest.java">JLabelTest.java</a></div>
<div><img src="image/JLabel.jpg" width=200 height=100 alt="JLabel"></div>
<h5>【説明】</h5>
<p><b>ラベル</b> には <b>Label</b> クラスを用います。</p>
<h5>【補足】</h5>
<ul>
<li>ラベルを変更する → setText()
</ul>
</div>
<h4><a name="JTextField">■ テキストフィールド(JTextField)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JTextFieldTest.java">JTextFieldTest.java</a></div>
<div><img src="image/JTextField.jpg" width=200 height=100 alt="JTextField"></div>
<h5>【説明】</h5>
<p><b>テキストフィールド</b> には <b>JTextField</b> クラスを用います。</p>
<h5>【補足】</h5>
<ul>
<li>テキストを読み書きする → getText(), setText()
</ul>
</div>
<h4><a name="JTextArea">■ テキストエリア(JTextArea)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JTextAreaTest.java">JTextAreaTest.java</a></div>
<div><img src="image/JTextArea.jpg" width=200 height=100 alt="JTextArea"></div>
<h5>【説明】</h5>
<p><b>テキストエリア</b> には <b>JTextArea</b> クラスを用います。</p>
<h5>【補足】</h5>
<ul>
<li>テキストを読み書きする → getText(), setText()
</ul>
</div>
<h4><a name="JCheckBox">■ チェックボックス(JCheckBox)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JCheckBoxTest.java">JCheckBoxTest.java</a></div>
<div><img src="image/JCheckBox.jpg" width=200 height=100 alt="JCheckBox"></div>
<h5>【説明】</h5>
<p><b>チェックボックス</b> には <b>JCheckBox</b> クラスを用います。ActionListener でもチェックボックスをクリックされたことを監視可能ですが、チェックボックスのオン・オフ変化を確実に監視するには、ChangeListener(javax.swing.event)を用いるのが無難です。ButtonGroup によるグルーピングも可能です。</p>
<h5>【補足】</h5>
<ul>
<li>オン・オフの状態変化を監視する → ChangeListener
<li>オンかオフか調べる → isSelected()
<li>オン・オフを切り替える → setSelected()
</ul>
</div>
<h4><a name="JRadioButton">■ ラジオボタン(JRadioButton)</a></h4>
<div class=i>
<h5>【サンプル】</h5>
<div><a href="sample/swing/JRadioButtonTest.java">JRadioButtonTest.java</a></div>
<div><img src="image/JRadioButton