JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは
JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。
JToggleButtonの主な特徴
- 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。
- ボタンが押されるたびにActionEventが発生します。
- さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポーネントで利用されます。ボタンが押し込まれた状態では「選択中」、飛び出した状態では「非選択」として扱われます。
- ItemEventを処理するには、ItemListenerインターフェースを実装する必要があります。このインターフェースには、アイテムの状態が変化したときに呼び出されるitemStateChanged()メソッドが定義されています。
- トグルボタンが現在選択されているかどうかは、イベントを発生させたボタンに対してisSelected()メソッドを呼び出すことで確認できます。
サンプルコード
以下は、JToggleButtonの状態変化を検知して、ボタンの表示テキストを切り替えるシンプルなサンプルプログラムです。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class JToggleButtonTest extends JFrame implements ItemListener {
private JToggleButton jtb;
JToggleButtonTest() {
setTitle("JToggleButton Test");
setLayout(new FlowLayout());
setJToggleButton();
setAction();
setSize(450, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private void setJToggleButton() {
jtb = new JToggleButton("ON");
add(jtb);
}
private void setAction() {
jtb.addItemListener(this);
}
public void itemStateChanged(ItemEvent eve) {
if(jtb.isSelected())
jtb.setText("OFF");
else
jtb.setText("ON");
}
}
public class MainApp {
public static void main(String[] args) {
new JToggleButtonTest();
}
}
コードのポイント
- JToggleButtonTestクラスはJFrameを継承し、ItemListenerインターフェースを実装しています。
- setJToggleButton()メソッドで「ON」というラベルを持つトグルボタンを作成し、フレームに追加しています。
- setAction()メソッドでaddItemListener()を使ってリスナーを登録することで、ボタンの選択状態の変化を受け取れるようにしています。
- itemStateChanged()メソッド内ではisSelected()でボタンの状態を判定し、選択されていれば「OFF」、解除されていれば「ON」に表示を切り替えています。
実行結果
初期状態ではボタンに「ON」と表示されています。

ボタンをクリックして選択状態になると、表示が「OFF」に切り替わります。

-
JavaでJPanelのpaintComponent()メソッドを実装する方法をわかりやすく解説
JPanelはJavaにおける軽量コンテナであり、それ自体は不可視(インビジブル)なコンポーネントとして扱われます。デフォルトのレイアウトにはFlowLayoutが採用されています。JPanelを生成した後は、Containerクラスから継承されたadd()メソッドを呼び出すことで、ボタンやラベルなどの他のコンポーネントをJPanelオブジェクトに自由に追加できます。 paintComponent()メソッドとは このメソッドは、単なる背景色の描画にとどまらず、JPanel上に独自の図形や画像などを描画したい場合に必要となります。paintComponent()メソッドはすでにJPanelクラ
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ