MouseListener 多次打印消息
MouseListener prints message multiple times
所以我正在尝试使用 Java 图形创建视频游戏,我需要为菜单屏幕上的 "Play" 按钮使用 MouseListener。当我按下按钮时,只要我按住按钮,它就会重复打印测试文本。我认为这就像编写只允许打印一次的代码一样简单,但我不知道该怎么做。
我试过添加 return 方法,但我没有成功。
我还尝试将 MouseListener 语句移动到 mouseClicked、mouseEntered、mouseExited 和 mouseReleased,但没有成功
我过去确实遇到过类似的问题,除了用 opening other windows.
替换 print 语句
这里是 MouseListener 语句
public void mousePressed(MouseEvent e) {
if ((e.getButton() == 1)
&& (e.getX() >= Playx1 && e.getX() <= Playx1 + Playw1 && e.getY() >= Playy1 && e
.getY() <= Playy1 + Playh1)) {
System.out.println("Test Text, Replace line with method later");
}
}
动画循环可能很重要,我不知道
private Thread animationThread = new Thread(new Runnable() {
public void run() {
while (true) {
repaint();
try {Thread.sleep(10);} catch (Exception ex) {}
}
}
});
我希望当我按下按钮时只显示一次 "Test Text, Replace line with method later",但相反,只要我按下按钮它就会一直显示。
我会按如下方式解决:
AtomicBoolean buttonIsPressed = new AtomicBoolean( false );
public void mousePressed( MouseEvent e )
{
if( ((e.getButton() == 1)
&& (e.getX() >= Playx1 && e.getX() <= Playx1 + Playw1 && e.getY() >= Playy1 &&
e.getY() <= Playy1 + Playh1))
&& !buttonIsPressed.compareAndExchange( false, true ) )
{
System.out.println("Test Text, Replace line with method later");
}
}
public void mouseReleased( MouseEvent e )
{
if( e.getButton() == 1 )
{
buttonIsPressed.compareAndExchange( true, false );
}
}
我想这就是@inquizitive 在他们的评论中的意思。
所以我正在尝试使用 Java 图形创建视频游戏,我需要为菜单屏幕上的 "Play" 按钮使用 MouseListener。当我按下按钮时,只要我按住按钮,它就会重复打印测试文本。我认为这就像编写只允许打印一次的代码一样简单,但我不知道该怎么做。
我试过添加 return 方法,但我没有成功。 我还尝试将 MouseListener 语句移动到 mouseClicked、mouseEntered、mouseExited 和 mouseReleased,但没有成功 我过去确实遇到过类似的问题,除了用 opening other windows.
替换 print 语句这里是 MouseListener 语句
public void mousePressed(MouseEvent e) {
if ((e.getButton() == 1)
&& (e.getX() >= Playx1 && e.getX() <= Playx1 + Playw1 && e.getY() >= Playy1 && e
.getY() <= Playy1 + Playh1)) {
System.out.println("Test Text, Replace line with method later");
}
}
动画循环可能很重要,我不知道
private Thread animationThread = new Thread(new Runnable() {
public void run() {
while (true) {
repaint();
try {Thread.sleep(10);} catch (Exception ex) {}
}
}
});
我希望当我按下按钮时只显示一次 "Test Text, Replace line with method later",但相反,只要我按下按钮它就会一直显示。
我会按如下方式解决:
AtomicBoolean buttonIsPressed = new AtomicBoolean( false );
public void mousePressed( MouseEvent e )
{
if( ((e.getButton() == 1)
&& (e.getX() >= Playx1 && e.getX() <= Playx1 + Playw1 && e.getY() >= Playy1 &&
e.getY() <= Playy1 + Playh1))
&& !buttonIsPressed.compareAndExchange( false, true ) )
{
System.out.println("Test Text, Replace line with method later");
}
}
public void mouseReleased( MouseEvent e )
{
if( e.getButton() == 1 )
{
buttonIsPressed.compareAndExchange( true, false );
}
}
我想这就是@inquizitive 在他们的评论中的意思。