JavaのJButtonにロールオーバー効果を実装する方法をわかりやすく解説
JButtonはAbstractButtonのサブクラスであり、GUIアプリケーションにプラットフォームに依存しないボタンを追加できるSwingコンポーネントです。ボタンが押されたりクリックされたりするとActionListenerインターフェースがイベントを受け取り、さらにMouseListenerやKeyListenerインターフェースによるイベント処理にも対応しています。
本記事では、マウスカーソルがボタンの上に乗ったとき(ロールオーバー時)にボタンの見た目を変化させる効果の実装方法を解説します。具体的には、MouseListenerインターフェースのmouseEntered()メソッドをオーバーライドすることで実現できます。
mouseEntered()メソッドの構文
void mouseEntered(MouseEvent e)
このメソッドは、マウスカーソルがコンポーネントの領域に入った瞬間に呼び出されます。ここでボタンの前景色(文字色)を変更する処理を記述します。
実装例
以下のコードでは、MouseAdapterクラスを継承した匿名クラスを使用し、マウスがボタンに入ったときに文字色を緑色へ変更し、マウスが離れたときに元の色へ戻す処理を実装しています。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RollOverButtonTest extends JFrame {
private JButton button;
public RollOverButtonTest() {
setTitle("RollOverButton Test");
button = new JButton("Rollover Button");
button.addMouseListener(new MouseAdapter() {
Color color = button.getForeground();
public void mouseEntered(MouseEvent me) {
color = button.getForeground();
// マウスがボタンの上にある間、文字色を緑に変更
button.setForeground(Color.green);
}
public void mouseExited(MouseEvent me) {
// マウスが離れたら元の色に戻す
button.setForeground(color);
}
});
add(button, BorderLayout.NORTH);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new RollOverButtonTest();
}
}
コードのポイント
- MouseAdapterの活用: MouseListenerインターフェースの全メソッドを実装する代わりに、MouseAdapterクラスを継承すれば、必要なメソッド(mouseEnteredとmouseExited)だけをオーバーライドでき、コードがすっきりします。
- 元の色の保存: 匿名クラス内のフィールドcolorに初期の前景色を保持しておき、mouseExited()で復元することで、ロールオーバー前の状態に正しく戻せます。
- 色の切り替え: mouseEntered()内でsetForeground(Color.green)を呼び出すことで、マウスが乗った瞬間に文字色が緑へ変化します。
実行結果
プログラムを実行するとウィンドウが表示され、通常時はボタンの文字色がデフォルト色(黒)です。マウスカーソルをボタンの上に移動させると文字色が緑色に変わり、カーソルを離すと元の色に戻ります。

補足:setRolloverIcon()による代替手法
文字色ではなくアイコンを切り替えたい場合は、JButtonに標準で備わっているロールオーバー機能を利用する方法もあります。setRolloverEnabled(true)を呼び出した上で、setRolloverIcon()メソッドにマウスオーバー時に表示したいIconを設定すれば、同様の効果をより簡単に実現できます。用途に応じて使い分けるとよいでしょう。
-
Javaで編集可能なJLabelを実装する方法
JLabelとはJLabelクラスはJComponentクラスを継承しており、JLabelのオブジェクトを使用することで、GUI上にテキストによる説明や情報を表示できます。JLabelの主な特徴は以下のとおりです。1行の読み取り専用テキスト、画像、またはその両方を表示できる重要なメソッドとして、setText()、setIcon()、setBackground()、setOpaque()、setHorizontalAlignment()、setVerticalAlignment()などが用意されているPropertyChangeListenerインターフェースを明示的に登録して、プロパティの変
-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー