web-dev-qa-db-ja.com

Java MouseListener

JLabelの束があり、マウスクリックイベントをトラップしたいと思います。現時点では私が使用する必要があります:

public void mouseClicked(MouseEvent arg0) {

}

public void mouseExited(MouseEvent arg0) {

}

public void mouseEntered(MouseEvent arg0) {

}

public void mousePressed(MouseEvent arg0) {

}

public void mouseReleased(MouseEvent arg0) {

    System.out.println("Welcome to Java Programming!"); 
}

トラップしたくない一連のイベントを作成する代わりに、これを行うための整然とした方法があるかどうか疑問に思っていましたか?

編集:

    class MyAdapter extends MouseAdapter {
    public void mouseClicked(MouseEvent event) {

        System.out.println(event.getComponent());
    }
}

上記は機能しますが、netBeansは@overrideアノテーションを追加すると言っています。これは何を意味するのでしょうか?

編集:わかりました。修正して解決しました。

13
iTEgg

MouseAdapter()を使用します

マウスイベントを受け取るための抽象アダプタークラス。このクラスのメソッドは空です。このクラスは、リスナーオブジェクトを作成するための便宜として存在します。したがって、次の例のように、必要なメソッドのみを実装する必要があります。

import Java.awt.event.MouseAdapter;
import Java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass extends JPanel {

  public MainClass() {

      addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me) { 
            System.out.println(me); 
          } 
        }); 

  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(200, 200);
    frame.setVisible(true);
  }
}
24
ring bearer

MouseAdapter インターフェイスを実装する MouseListener クラスを使用できるため、すべてのメソッドを実装する必要はありません。

ただし、目的のメソッドをオーバーライドすることにより、目的の動作を得ることができます。たとえば、mouseClickedメソッドをオーバーライドする場合は、マウスクリックイベントの動作を定義できます。

例(テストされていないコード):

JLabel label = new JLabel("Hello");

label.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
        System.out.println("Clicked!");
    }
});

上記のコードでは、JLabelは "Clicked! "をクリックすると、コンソールに表示されます。

8
coobird

代わりに MouseAdapter を拡張して、本当に関心のあるイベントをオーバーライドできます。

5
Bill the Lizard
public class MouseEventDemo ... implements MouseListener {
        //where initialization occurs:
        //Register for mouse events on blankArea and the panel.
        blankArea.addMouseListener(this);
        addMouseListener(this);
    ...

    public void mousePressed(MouseEvent e) {
       saySomething("Mouse pressed; # of clicks: "
                    + e.getClickCount(), e);
    }

    public void mouseReleased(MouseEvent e) {
       saySomething("Mouse released; # of clicks: "
                    + e.getClickCount(), e);
    }

    public void mouseEntered(MouseEvent e) {
       saySomething("Mouse entered", e);
    }

    public void mouseExited(MouseEvent e) {
       saySomething("Mouse exited", e);
    }

    public void mouseClicked(MouseEvent e) {
       saySomething("Mouse clicked (# of clicks: "
                    + e.getClickCount() + ")", e);
    }

    void saySomething(String eventDescription, MouseEvent e) {
        textArea.append(eventDescription + " detected on "
                        + e.getComponent().getClass().getName()
                        + "." + newline);
    }
}
2

クリックされたマウスイベントの例

mousePressedまたは他のマウスイベントを使用できるのと同じ方法で

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

public class Work1 extends JFrame{

    private JPanel panelNew;

    public Work1(){
        super("Work 1");


        // create Panel
        panelNew = new JPanel();
        panelNew.setLayout(null);
        panelNew.setBackground(Color.cyan );
        add(panelNew);

        // create Button
        JButton btn = new JButton("click me");
        // position and size of a button
        btn.setBounds(100, 50, 150, 30);

        panelNew.add(btn);


        // add event to button
        btn.addMouseListener(new MouseAdapter() { 
                public void mouseClicked(MouseEvent me) { 

                     // change text of button after click

                     if (btn.getText() == "abraCadabra"){
                          btn.setText("click me again") ;
                     }
                     else  btn.setText("abraCadabra");
                } 
         });        
    }




    public static void main(String[] args){
        Work1 go1 = new Work1();
        go1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        go1.setSize(320,200);
        go1.setVisible(true);   
    }




}
1

Java.awt.event.MouseAdapterから継承して、関心のあるイベントのメソッドのみをオーバーライドできます。

1
jarnbjo