Java 暂时禁用窗口的鼠标输入

Java 暂时禁用窗口的鼠标输入,java,swing,io,awt,mouselistener,Java,Swing,Io,Awt,Mouselistener,我最近开始用Java编程,并决定开始制作一个游戏,以此向自己展示一些新的概念和方法。该游戏是一款简单的2d回合策略游戏(或即将推出),我一直在努力解决的一个主要问题如下: 我希望所有玩家同时分配他们的命令,当他们完成分配他们的命令时,他们提交/确认/提交他们的命令,但是当我让游戏在功能上接受命令,并且一个非常简单的“提交”命令就位时,我似乎不知道如何在游戏开始移动玩家的单位时暂时禁用用户输入 我认为问题可能出在以下代码中的某个地方,如果代码的格式不正确,我向您道歉(我以前没有发布过问题,但我尝试

我最近开始用Java编程,并决定开始制作一个游戏,以此向自己展示一些新的概念和方法。该游戏是一款简单的2d回合策略游戏(或即将推出),我一直在努力解决的一个主要问题如下:

我希望所有玩家同时分配他们的命令,当他们完成分配他们的命令时,他们提交/确认/提交他们的命令,但是当我让游戏在功能上接受命令,并且一个非常简单的“提交”命令就位时,我似乎不知道如何在游戏开始移动玩家的单位时暂时禁用用户输入

我认为问题可能出在以下代码中的某个地方,如果代码的格式不正确,我向您道歉(我以前没有发布过问题,但我尝试过):

还有一些变化。但该代码似乎是可操作的,我猜当
正在进行=真时,它会转储
targetlocation[x/y]
,将它们重置为默认值(工件的当前位置),但如果它不转储
targetlocation[x/y]
,当
按钮1
未按下时,该解释没有多大意义

目前,除了在提交订单后能够更改targetlocation值之外,该代码的功能与预期一致


编辑:此方法(及其所在的类)将AWT用于GUI。

在SWING中,这正是它的用途。

您使用哪个GUI库?AWT?Swing?对不起,我在这节课上用AWT。我将把它添加到我的问题帖子中。看起来好像你在同一个程序中混合了Swing和AWT。如果是这样,请重新考虑这一点,因为不需要使用AWT,当您可以创建一个全Swing GUI时,AWT是一个比Swing更有限的库。1)为什么使用AWT而不是Swing?关于放弃使用AWT组件的许多好理由,请参见上的回答。如果需要支持较旧的基于AWT的API,请参阅。2) 为了更快地获得更好的帮助,请发布一篇文章。我正在使用这两种方法,我已经开始意识到这将成为一个问题,但由于我对java仍然缺乏经验,我希望我能够完成这个程序,或者至少让这个部分工作起来,然后只使用swing重新构建它。我早期在这个项目中的大部分工作都受到一个相当。。。糟糕的教程集,真的是一个盲人被近乎盲人引导的例子。用于为该程序绘制窗口的类使用SWING,它是否会像在IsAking=true时将玻璃窗格设置在顶部,然后在IsAking=false时将其移回默认位置那样简单?谢谢!这将大大加快/简化这一过程。
if(Canvas.keyboardKeyState(KeyEvent.VK_SPACE)){
    isUnderway=true;
    timeStarted=System.currentTimeMillis();
}
if (isUnderway&&System.currentTimeMillis()>=timeStarted + turnTimeMillis){
    isUnderway=false;
}
if(Canvas.mouseButtonState(MouseEvent.BUTTON1)){
    targetlocationy=((mousePosition.y-25)/50)*50;
    targetlocationx=((mousePosition.x-25)/50)*50;            
}
totargetx = targetlocationx - x;
totargety = targetlocationy - y;
dist = Math.hypot( totargetx, totargety );

if(isUnderway){
    if ( dist <= 5 ){
        x = targetlocationx;
        y = targetlocationy;
    }
    else{
        x += totargetx * ( 2 / dist );
        y += totargety * ( 2 / dist );
    }
}
if(Canvas.mouseButtonState(MouseEvent.BUTTON1)&&isUnderway=false)