2012-02-07 4 views
2

私はインストラクターとこの前置きをする必要がありますが、私たちはIDEを使用できません。 TextPadを使用します。このラベルをクリックして、 "H"から "T"に変更します。現在、ラベルをクリックすると何もしません。私は何を忘れていますか?MouseListenerが私のために働いていないようです

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


public class Lab3Label extends JLabel implements MouseListener { 
    int count = 0; 
    boolean flag = true; 

    public Lab3Label (int i) { 
     setLayout(new BorderLayout()); 
     count = i; 
     this.setText("H"); 
     this.setFont(new Font("Serif", Font.PLAIN, 60)); 
     this.setBorder(BorderFactory.createLineBorder(Color.black)); 
    } 

    public void mouseReleased(MouseEvent e) 
     { 

      if(flag){ 
       this.setText("H"); 
       flag = false; 
      } 

      else{ 
       this.setText("T"); 
       flag = true; 
      } 
     } 

    public void mouseExited(MouseEvent e){} 
    public void mouseClicked(MouseEvent e){} 
    public void mousePressed(MouseEvent e){} 
    public void mouseMoved(MouseEvent e){} 
    public void mouseEntered(MouseEvent e){} 


} 
+0

"私のインストラクターは私たちにIDEの" * groan *を使用させません。 – millimoose

+0

教えてください。私が卒業したとき、私は一からeclipse/netbeansを使う方法を学ばなければならないでしょう。 – Robert

答えて

6

あなたJLabelMouseListenerを実装していますが、あなたはまた、自分自身にイベントを送信するためにJLabelを指示する必要があります。コンストラクタの最後に、あなたはあなたがMouseListener任意のクラスを作ることができることを覚えていれば

addMouseListener(this); 

これは、より理にかなっていると言う必要があります、そして、あなたのJLabelにリスナーを接続する必要があると思います。 JLabelがそれ自身のリスナーであるという事実は、あなたにこの責任を免除するものではありません。

+0

クラップ私は最後のラボでそれを見ましたが、それを置くことを忘れました。ありがとうございます – Robert

+0

クリックするたびにランダムなTrue/falseを取得することは可能ですか? – Robert

+2

もちろん、 'java.lang.Math.random()'が0.5よりも小さいかどうかをテストできます。それは約半分の時間で真実になるでしょう。 –

2

ラベルにMouseListenerを追加したことはありません。

addMouseListener(this); 
2

あなたはJLabelのにマウスリスナーを追加する必要があるためです。

はこれを行うには、単純に次のコードを追加します。あなたのコンストラクタで:

addMouseListener(this); 
関連する問題