gpt4 book ai didi

java - 从 JButton 按下操作监听器返回字符串?

转载 作者:行者123 更新时间:2023-12-01 14:48:21 24 4
gpt4 key购买 nike

我已经尝试获取 JButton 一段时间了,我必须返回一个字符串,并且它在一定程度上可以工作,但它仅在我使用 System.out.println() 方法时才有效。

我的相关代码:

private String answer;

public void inputDataButton(JButton inButton)
{
inButton.addActionListener(new Action1());
}

public String returnAnswer()
{
return answer;
}

private void fileAnswer(String inString)
{
answer = new String(inString);
}

public class Action1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String sub = JOptionPane.showInputDialog("Input The Date");
fileAnswer(sub);
}
}

由我的 Main 控制:

public class test
{
protected static JTextField text;

public static void main(String[] args)
{
javaUI base = new javaUI("Date Killer", 800, 800);

JLabel label = new JLabel("Place Holder");
base.addLabel(label, 1, 0, false);

JButton button = new JButton("Press Here");
base.addButton(button, 0, 0, false);

String str = "EMPTY";

base.inputDataButton(button);

while (str == "EMPTY")
{
str = base.returnAnswer();
}

System.out.println(str + " TEST");
label.setText(str + "SETTED");
}
}

JavaUI 只是另一个类,简化了标签、按钮等的整个 JFrame 和 Jpanel 设置。

无论如何,这是我的问题。在主类中的 while 语句中,如果紧接着有一个 System.out.println() 语句,则 str 会成功设置为字符串。这显然会让终端变得一团糟,因为它会重复“EMPTY”100 多次,直到按下按钮。

但是,如果我删除该语句,显然不会打印出任何内容,但 str 也永远不会设置为 str。

我已经搞乱这个问题有一段时间了(对所有java UI东西来说都是新的,主要只是在计算部分工作)并且我还没有找到一个不会弄乱的工作解决方案我的终端。感谢您的帮助!!!

凯尔

最佳答案

1) 使用循环来“等待”操作发生有点奇怪。你可以观察你的CPU使用情况,如果它永远循环,它可能会死掉。

2) 此外,无论您的按钮是否被单击,该方法都会返回 -- 在操作发生之前,该方法会根据您的代码返回一个 null 字符串。在你的 main 方法中, str == "EMPTY" 在第一轮之后很快就会变成 false。然后您将在屏幕上看到“null TEST”。

<小时/>

尝试将while循环后的代码放入actionPerformed方法或fileAnswer方法中并删除循环:

public void actionPerformed(ActionEvent e)
{
String sub = JOptionPane.showInputDialog("Input The Date");
System.out.println(sub + " TEST");
label.setText(sub + "SETTED");
}

另外,我不知道你为什么调用answer = new String(inString)。如果你想将它分配给另一个变量,你只需要调用answer = inString,因为String是不可修改的。在这种情况下,您不需要这样做。

关于java - 从 JButton 按下操作监听器返回字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155424/

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