2017-07-07 155 views
1

我是Java編程GUI的新手,我試圖在按下按鈕時在終端上打印一條消息,而在釋放時按下另一條消息。如何在使用Java中的ActionListener按下或釋放按鈕時將方法分配給按鈕?

這是我有一個常規按鈕按下。

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

我在IntelliJ IDEA的幫助下做了這個。我想讓按鈕在按下時發送消息,並在發佈時發送不同的消息。

回答

2

你可以只添加一個簡單的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

1

使用自定義類,並使用它

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(); 
      } 
     } 
    } 
1

您可以使用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 
    } 
}); 
相關問題