我是用 Java 编写 GUI 的新手,我试图在按下按钮时在终端上打印一条消息,在释放按钮时打印另一条消息。
这是我常规按下按钮的功能。
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()
和(许多(更多方法。看看这个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
}
});