Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

MouseAdapterをMouseListennerに変える方法

以下のソースをMouseAdapterを使わずに実行させたいのです。
とりあえずメソッドをすべて実行しなければならないということはわかったので、クリック・プレス・リリースは追加したのですが、crass SampleMouseListenerに続く表記がわからないので質問させて頂きました。
よろしく簡単な質問なのかもしれませんがお願いします。

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

public class s0812101_02 extends JApplet
{
   private JLabel lb1, lb2 ,lb3; //JLabelはintなどと同じ型である
   private JButton bt;
   public void init()
   {
      //コンテンツペインの取得
      Container cnt = getContentPane();
      //コンポーネントの作成
      lb1 = new JLabel("マウスを画面内に入れて下さい");
      lb2 = new JLabel();
      lb3 = new JLabel();
      bt = new JButton("終了");
      //コンテナへの追加
      cnt.add(lb1, BorderLayout.NORTH);
      cnt.add(bt, BorderLayout.SOUTH);
      cnt.add(lb2, BorderLayout.CENTER);
      cnt.add(lb3, BorderLayout.WEST);
      //リスナの登録
      bt.addActionListener(new SampleActionListener(lb2,lb3));
      
      addMouseListener(new SampleMouseListener(lb1));
      
      addKeyListener(new SampleKeyListener(lb3)); //SampleActionListener()に引数を入れる
      
      
   }
}
   
   
   
   //リスナクラス
   class SampleKeyListener extends KeyAdapter
   {
 
 private JLabel  lba;
 private JLabel  lbx;
 private JLabel  lbz;
 
 public SampleKeyListener(JLabel lb9)
 {
  this.lba = lb9;
 }
 
      public void keyPressed(KeyEvent e)
      {
         String str;
         int k = e.getKeyCode();
         switch(k)
         {
            case KeyEvent.VK_UP:
              str = "ゴロゴロゴロ♪"; break;
            case KeyEvent.VK_DOWN:
              str = "フゥーーー!!!"; break;
            case KeyEvent.VK_LEFT:
              str = "プイッ"; break;
            case KeyEvent.VK_RIGHT:
              str = "うるうる・・・"; break;
            default:
              str = "うぇwwwうぇwww";
         }
         lba.setText(str);
         
      }
   }
   
   
   
   class SampleActionListener implements ActionListener
   {
 
 private JLabel lbb;
 private JLabel lbd;
 
 public SampleActionListener(JLabel lb8,JLabel lb6)
 {
  this.lbb = lb8;
  this.lbd = lb6;
 }
 
      public void actionPerformed(ActionEvent e)
      {
         lbb.setText("猫は満足してどこかに去っていきました");
         lbd.setText("");
      }
   }
   
   
   
   class SampleMouseListener extends MouseAdapter
   {
 
 private JLabel lbc;
 
 
 public SampleMouseListener(JLabel lb7)
 {
  this.lbc = lb7;
 }
 
 private JLabel lb7;
 
      
      public void mouseClicked(){}
      public void mousePressed(){}
      public void mouseReleased(){}
      
      public void mouseEntered(MouseEvent e)
      {
         lbc.setText("矢印キーを押して猫とスキンシップをとって下さい");
      }
      public void mouseExited(MouseEvent e)
      {
         lbc.setText("マウスを画面内に入れてください");
      }
   }

4

回答

7320

閲覧

4件の回答

評価

0

implements MouseListener ってことでしょうね
http://www.javaroad.jp/java_interface1.htm
このへんでインターフェース勉強するといいかも

評価

0

レスありがとうございます。

crass SampleMouseListener implements MouseListenerという表記はもう試したのですがjavacするときに

s0812101_02.java:106: SampleMouseListener はabstract でなく、java.awt.event.Mou
seListener 内の abstract メソッド mouseReleased(java.awt.event.MouseEvent) をオーバーライドしません。
   class SampleMouseListener implements MouseListener
   ^
エラー 1 個

というエラーがでます。
これはもしやcrass SampleMouseListenerの後に続く表記がおかしいのではなく、その他の部分がおかしいのでしょうか?

評価

0

よく質問者が言いたいことがわからないのだが…(^^;
えっとMouseAdapterからMouseListennerにのみ変えたけどコンパイルが通りませんって言ってるの?

んで私が聞きたいのはちゃんとメソッドを実装したの?

ちなみに空のメソッドは無理だからね。
System.outでもなんでもいいから記述しておかないと
コンパイラは実装を確認してくれないので。
ってことで上記ソースの
public void mouseClicked(){}
public void mousePressed(){}
public void mouseReleased(){}
になんでも良いから実装してみましょう。
あ、インターフェースも変更するようにね。

評価

0

あああさんのおっしゃった通り
public void mouseClicked(){}
public void mousePressed(){}
public void mouseReleased(){}
を実装してインターフェースも変えたら上手く実行されました。
このような簡単な質問に御回答いただきありがとうございます。
初心者故、また質問させて頂くこともあるかと思いますがよろしくお願いします。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。