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