2017-05-15 4 views
0

マイスイングアプリケーションの1つのパネルに6ボタンがあります。カーソルがボタン上に移動すると、デフォルトのカーソルを手のカーソルに変更し、カーソルが終了してからデフォルトのカーソルを変更したいと思います。今私は以下のコードを使ってこのことをやっています。スイングアプリケーションでマウスポインタコンポーネントを取得する方法

private void btnRegisterReceiptMouseEntered(java.awt.event.MouseEvent evt) {             
    btnRegisterReceipt.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 
}            

private void btnRegisterReceiptMouseExited(java.awt.event.MouseEvent evt) {            
    btnRegisterReceipt.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 
} 

ここで、このコードをそれぞれのボタンに書きたいと思います。

しかし、私はこれを行うための一般的な方法を書いてください。私はすでにこのことをMouseListenerを使用しようとしていますが、私はマウスポイントのコンポーネントを取得できません。

私はそれが可能かどうかわかりません。可能であれば、誰も私にこのことをする方法を教えてください。

private void changeCursor() { 
    addMouseListener(new MouseAdapter() { 

     @Override 
     public void mouseEntered(MouseEvent e) { 
      /*if (mouse Entered compornent is button) { 
       button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 
      } else { 
       button.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 
      }*/ 
     } 

    }); 
} 

答えて

3

(annonymouseクラスとして)ジェネリックのMouseListenerを書く:

MouseListener ml = new MouseAdapter() 
{ 
    @Override 
    public void mouseEntered(MouseEvent e) 
    { 
     e.getComponent(setCursor(...)); 
    } 

    @Override 
    public void mouseExited(MouseEvent e) 
    { 
     e.getComponent(setCursor(...)); 
    } 
}; 

その後、あなただけであなたが望む任意のコンポーネントにするMouseListenerを追加することができます。

btnRegisterReceipt.addMouseListener(ml); 
anotherButton.addMouseListener(ml); 

あなたはまた作ることができますこれは再利用可能なクラスとして:

public MousePointerListener extends MouseAdapter 
{ 
    @Override 
    public void mouseEntered(MouseEvent e) 
    { 
     e.getComponent(setCursor(...)); 
    } 

    @Override 
    public void mouseExited(MouseEvent e) 
    { 
     e.getComponent(setCursor(...)); 
    } 
} 

次に、あなたが使用します。

MouseListener ml = new MousePointerListener(); 
btnRegisterReceipt.addMouseListener(ml); 
anotherButton.addMouseListener(ml); 

両方の例でのキーポイントは、あなたが一般的なコードを記述することができますMouseEventの、からのイベントのソースを得ることができるということです。 IDEがリスナーコードを生成するのではなく、すべてのリスナーに対してこのアプローチを検討する必要があります。

+0

+1 - ありがとうございました。それは仕事です。 e.getComponent()。setCursor(Cursor.getPredefinedCursor(Cursor .HAND_CURSOR)); –

関連する問題