我已经尝试了一段时间来获取一个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);
}
}
我的主控制:
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新东西都是新的,主要只是在计算部分工作中)并且我还没有找到一个不会弄得一团糟的工作解决方案我的终端感谢所有帮助!!!
Cail
答案 0 :(得分:1)
1)使用循环“等待”动作发生有点奇怪。你可以观察你的cpu使用情况,如果它永远循环就可能已经死了。
2)此外,无论您的按钮是否被单击,该方法都将返回 - 在操作发生之前,该方法根据您的代码返回null
字符串。在你的主要方法中,str == "EMPTY"
很快就会在第一轮之后变为假。然后你会在屏幕上看到“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是不可修改的。在这种情况下,你不要这样做。