• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Label を リスナーと結びつける方法)

Labelをリスナーと結びつける方法

このQ&Aのポイント
  • Labelとイベントリスナを組み合わせた背景変更プログラムの実装方法を教えてください
  • Labelを押すことで背景色が変わるプログラムの作成方法を教えてください
  • Labelを使って背景が変わるプログラムを作りたいですが、イベント処理の方法がわかりません

質問者が選んだベストアンサー

  • ベストアンサー
  • omni2
  • ベストアンサー率53% (33/62)
回答No.1

Javaは勉強中の身で本を参考にかきます。こんな感じでいいのでしょうか? import java.awt.*; import java.awt.event.*; public class test{ public static void main(String args[]){ MyFrame f=new MyFrame("test"); f.setVisible(true); } } class MyFrame extends Frame{ Label red, green, blue; MyFrame(String s){ super(s); setSize(200,200); setLocation(100,150); setLayout(new FlowLayout(FlowLayout.CENTER)); add(red=new Label("■")); red.setForeground(Color.red); red.setBackground(Color.red); red.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ setBackground(Color.red); } }); add(green=new Label("■")); green.setForeground(Color.green); green.setBackground(Color.green); green.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ setBackground(Color.green); } }); add(blue=new Label("■")); blue.setForeground(Color.blue); blue.setBackground(Color.blue); blue.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ setBackground(Color.blue); } }); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } }

addected
質問者

補足

こんにちは。 無名内部クラスをつかえばうまくいくのですね^^ ありがとうございます。 無名内部クラスについて質問があるのですが、 普通のメソッドの場合 //---------------------------------------------- import java.awt.*; public class Sample01{ public static void main(String args[]){ MyFrame f = new MyFrame(); f.changeBack(); f.show(); } } class MyFrame extends Frame{ MyFrame(){ setSize(100,100); setLocation(100,100); } public void changeBack(){ setBackground(Color.pink); } } //---------------------------------------------- このchangeBack()メソッドにおいて setBackground(Color.pink); は 言い換えれば this.setBackground(Color.pink); と自分自身のクラスの参照値を渡しているのと思うのですが、(この記述でもエラーは出ない) 無名内部クラスを用いて以下↓のように //------------------------------------------------ import java.awt.*; import java.awt.event.*; public class Sample01{ public static void main(String args[]){ MyFrame f = new MyFrame(); f.show(); } } class MyFrame extends Frame{ MyFrame(){ setSize(100,100); setLocation(100,100); addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ setBackground(Color.red) } }); } } //------------------------------------------------ 記述した場合 setBackground(Color.red);を this.setBackground(Color.red); に変更するとエラーが出ます。 MyFrameオブジェクト(無名クラスを内部に持つクラス)の参照値を、無名内部クラスは引数無しで どのように参照しているのでしょうか。 その仕組みはどのようになっているのでしょうか。

関連するQ&A

専門家に質問してみよう