Java 使用同一按钮将布尔值切换为false或true

Java 使用同一按钮将布尔值切换为false或true,java,eclipse,lwjgl,Java,Eclipse,Lwjgl,当我按下同一个鼠标按钮时,我试图在真与假之间进行布尔切换 这是我写的代码: if (Mouse.isButtonDown(0)){ Mouse.setGrabbed(true); } else if(Mouse.isButtonDown(0)){ Mouse.setGrabbed(false); } if(Mouse.isGrabbed()){ camera.processMous

当我按下同一个鼠标按钮时,我试图在真与假之间进行布尔切换

这是我写的代码:

if (Mouse.isButtonDown(0)){
            Mouse.setGrabbed(true);
        } else if(Mouse.isButtonDown(0)){
            Mouse.setGrabbed(false);
        }
       if(Mouse.isGrabbed()){
           camera.processMouse(1, 80, -80);
       }

这不起作用,当我第二次按下鼠标按钮时,它不会做出反应。

只需稍加修改

   if (Mouse.isButtonDown(0)){
        Mouse.setGrabbed(true);
    } else{
        Mouse.setGrabbed(false);
    }
   if(Mouse.isGrabbed()){
       camera.processMouse(1, 80, -80);
   }

您可以尝试以下方法:

if (Mouse.isButtonDown(0)){
        Mouse.setGrabbed( !Mouse.isGrabbed() );
    } 
   if(Mouse.isGrabbed()){
       camera.processMouse(1, 80, -80);
   }

“!”符号反转给定的真/假值,因此!真给假!false为true。

为什么您的if和else if条件相同?控件将如何到达else if子句?这是我第二次按下鼠标按钮时的绝望尝试使其变为false。很抱歉,我没有声称自己是这方面的专家,这就是我咨询你们的原因:@user3677855请检查我在下面发布的答案。如果有任何错误,请通知我。重要的是要考虑您的编码。简单地复制一些代码并调整一些东西并不是解决问题的方法。从头开始,仔细思考每一步。StackOverflow不是一个为我写代码的网站。我不认为它是如此的热门!但我认为在研究代码之前确保代码正常工作是很重要的。。。。。我已经收到了4封回复,但没有一封能够像我预期的那样工作,因此我发现努力学习他们的代码是非常愚蠢的。我向你们保证,一旦找到解决方案,我会仔细研究,这样我就不用再问你们这个问题了。如果我的学习方法冒犯了你,我很抱歉,虽然我看不出有什么问题。我已经试过了。当我按下按钮时,它根本没有反应。当我使用这段代码时,就好像sethapped经常是假的,这是可以的,但当我按下按钮或按住它时,它不会变成真的。你的答案不符合他的目的!我们离得很近了!但它只会在我按下按钮的某些时候做出反应。因此,在我按下按钮之前,我会随机按下1-10次。每次按下按钮时,你的程序都会到达代码吗?您可以通过设置断点或打印类似“按钮按下”的内容来测试这一点。好的,这里有一些内容。我曾尝试向其中添加System.out.println,有几次我尝试按下鼠标,每次按下鼠标,它会打印4-7次。鼠标已导入。导入org.lwjgl.input.Mouse;我不知道这是否有用。我必须承认我自己丢了自动取款机。嗯,我自己从来没有用过LWJGL,所以恐怕我帮不了你。然而,它确实给出了为什么你的按钮不稳的答案。将“抓取”值翻转随机次数,得到随机结果。