如何在使用Java中的ActionListener按下或释放按钮时将方法分配给按钮?

问题描述:

我是Java编程GUI的新手,我试图在按下按钮时在终端上打印一条消息,而在释放时按下另一条消息。如何在使用Java中的ActionListener按下或释放按钮时将方法分配给按钮?

这是我有一个常规按钮按下。

leftButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent actionEvent) { 
      System.out.println("Pressed"); 
     } 
    }); 

我在IntelliJ IDEA的帮助下做了这个。我想让按钮在按下时发送消息,并在发布时发送不同的消息。

你可以只添加一个简单的MouseAdapter,就像这样:

MouseAdapter ma = new MouseAdapter() { 
    public void mousePressed(MouseEvent e) { 
     System.out.println("Pressed"); 
    } 
    public void mouseReleased(MouseEvent e) { 
     System.out.println("Released"); 
    } 
}; 
leftButton.addMouseListener(ma); 
frame.add(button); 

这将检测当鼠标按下按钮或释放在按钮上。

如果你愿意,你也可以在你的MouseAdapter添加mouseClicked()方法,mouseExited()mouseEntered()mouseMoved(),和(很多)更多的方法。退房this JavaDoc

使用自定义类,并使用它

leftButton.getModel().addChangeListener(new BtnCusttomListener()); 




private class BtnCusttomListener implements ChangeListener { 
     private boolean pressed = false; // holds the last pressed state of the button 

     @Override 
     public void stateChanged(ChangeEvent e) { 
      ButtonModel Buttonmodel = (ButtonModel) e.getSource(); 

      // if the current state differs from the previous state 
      if (model.isPressed() != pressed) { 
       String text = "Button pressed: " + model.isPressed() + "\n"; 
       textArea.append(text); 
       pressed = model.isPressed(); 
      } 
     } 
    } 

您可以使用MouseListener代替:

leftButton.addMouseListener(new MouseListener() { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     // The mouse button was pressed and released 
    } 

    @Override 
    public void mousePressed(MouseEvent e) { 
     // The mouse button was pressed 
    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 
     // The mouse button was released 
    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     // The cursor entered the bounds of the button (i.e. hovering) 
    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     // The cursor exited the bounds of the button 
    } 
});