gpt4 book ai didi

java - 在同一范围内调用时变量会产生多个值java

转载 作者:行者123 更新时间:2023-12-04 21:28:05 24 4
gpt4 key购买 nike

在 Java Swing 桌面应用程序中。我有一些较小的类,所有这些都在一个总体应用程序类中使用。其中一个较小的类是代表我的登录页面的 JPanel。我在这个页面的登录按钮上添加了一个 mouselistener,如下所示:

Public class loginPage extends JPanel{
String username;
boolean capturedName=false;
JTextField nameField;

...

loginButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
username = nameField.getText();
capturedName=true; //for redundant checking of mouse click event
System.out.println(username); //error checking
System.out.println(capturedName); //error checking
}
});
}

在代表我的 JFrame 的单独显示类中,我将登录页面作为所述类的属性,并在向其添加登录页面后在我的应用程序类中实例化该显示类。我试图在 App 类中捕获登录页面用户名 attr 并将其传递给其他方法。但是当我运行代码并单击登录按钮时,未捕获文本框中的值。

为了检查错误,我尝试了 ff:

//Set login page GUI up 

while(display.loginPage.username==null){ //this is initially true

if (display.loginPage.capturedName){ //boolean to check if button has been clicked
display.loginPage.username=display.loginPage.nameField.getText(); //intentional redundancy
String username=display.loginPage.username;
System.out.print(username);
//pass username to other methods
}

}

当我运行代码时,在用户名文本字段中输入一个名称,然后单击登录,同时打印出键入的名称和 capturedName boolean 值的真值,但是

if (display.loginPage.capturedName)

条件永远不会满足。此外,当我在 print display.loginPage.username 中添加时,我得到一个空值。相同值之间存在这种差异的原因可能是什么?

最佳答案

What could be the reason for this discrepancy between the same values?

您可能有两个相同类型的对象,一个显示,其状态正在改变,另一个不显示,表示您正在检查 if block 。

但同样,为了获得更好的帮助,请考虑创建并发布 Minimal, Complete, and Verifiable Example Program .我们不想看到你的整个程序,而是你应该将你的代码压缩成仍然可以编译的最小部分,没有与你的问题无关的额外代码,但仍然可以证明你的问题。顺便说一句,您永远不会像现在这样将 MouseListener 与 JButton 一起使用。而是使用 ActionListener,因为它就是为此而构建的。

关于java - 在同一范围内调用时变量会产生多个值java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com