如何在使用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
}
});