从JButton press Action Listener返回一个字符串?
我一直在尝试一段时间得到一个JButton我必须返回一个字符串,我有它在一定程度上工作,但它只适用于当我使用System.out.println()方法。从JButton press Action Listener返回一个字符串?
我的相关代码:
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被成功设置为字符串。 这显然使终端变得非常混乱,因为它重复“空”100次直到按下按钮。
但是,如果我删除该语句,显然没有什么是打印出来的,但是str永远不会设置为str。
我一直在这里乱搞了很长一段时间(新的所有Java UI的东西,主要只是在计算部分的东西),我还没有找到一个工作的解决方案,不做一个我的终端一团糟。感谢所有的帮助!
Cail
1)这是一个有点陌生,使用循环“等待”的动作发生。你可以看你的CPU使用情况,如果它永远循环,它可能会死机。
2)此外,无论按钮是否被点击,该方法都会返回 - 在动作发生之前,该方法会根据您的代码返回一个null
字符串。在你的主要方法中,str == "EMPTY"
在第一轮后很快就会变成错误的。然后你会在屏幕上看到“空测试”。
尝试把代码之后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
因为字符串是不可修改的。在这种情况下,你不要这样做。
哎呀,对不起答案=新的字符串(inString)部分,在我最近的代码中我改变了这一点。我可以这样做,除了我真正想要做的是将其馈送给main并将输入的字符串放入str中,因为我打算将其用于进一步计算,标签不是必需的,仅用于视觉方面完成的程序,我想要做的是获得按钮按下将输入的字符串返回到主要的字符串str。感谢您的帮助!:) – 2013-03-01 11:59:29
@CailDemetri不客气。关键是按下按钮后要做的任何计算,您应该在我所展示的'actionPerformed()'方法中调用它。我只是在你的问题中采用了这个例子。无论如何你需要改变设计。或者你能否展示原始要求,我可以帮助你制定一个更合适的方式来完成这项工作。 – shuangwhywhy 2013-03-01 14:05:25
ahhh,我明白你的意思了,我可以尝试为计算创建一个静态类。至于我想要做的是创建一种日历程序,除了它的别人,所以我不能做任何通过命令提示符的输入。所以我试图让用户通过按下按钮创建的输入对话框输入日期,即抓住输入的字符串并对其执行计算。问题是我无法弄清楚如何将所述字符串返回到我的主要。我可能会尝试与另一个班,但我宁愿在主要做。感谢您澄清:D – 2013-03-02 03:54:15
什么是使其工作的'System.out.println()'语句?而且,为什么'while.'循环中的'base.returnAnswer()'?每次调用它时是否返回不同的答案? – 2013-03-01 10:34:43
由于我不知道按钮将被按下的位置,因此我为循环直到字符串不是“空”的字符串设置了一个while循环。但是,如果循环内部有一个System.out.println(str)语句,它只会退出循环,否则会变得无止境。 – 2013-03-01 10:38:59