我一直在寻找各地,我找不到任何人可以解决这个问题。我正在制作一款游戏,在那款游戏中,我拥有可编辑的控件。控件窗口是一个单独的JFrame,当我单击确认按钮时,它应该将JTextFields中的项目(控件)写入文件。但是这不起作用,所以我打印出了包含这些值的数组列表。这里是代码:JTextField getText()不起作用
public void writeControls() {
ArrayList<String> al = new ArrayList<String>();
al.add(up.getText());
al.add(down.getText());
al.add(left.getText());
al.add(right.getText());
al.add(jump.getText());
al.add(duck.getText());
al.add(attack.getText());
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i));
}
System.exit(0);
}
的问题是这样的:如果我改变最终的JTextField attack
或其他任何一个为此事,并点击提交后,系统打印出的默认控件。例如,如果JTextFields具有值w,a,s,d,r,t,q,并且我将值q更改为i,则会打印出q。我究竟做错了什么?提前致谢!
EDIT 1:对文本框
代码,并且FILES....
是简单地存储在不同的类别的字符串。类setText()
低于textfields。
up = new JTextField(setText(FILES.controlsFileFinalDir, 1));
down = new JTextField(setText(FILES.controlsFileFinalDir, 2));
left = new JTextField(setText(FILES.controlsFileFinalDir, 3));
right = new JTextField(setText(FILES.controlsFileFinalDir, 4));
jump = new JTextField(setText(FILES.controlsFileFinalDir, 5));
duck = new JTextField(setText(FILES.controlsFileFinalDir, 6));
attack = new JTextField(setText(FILES.controlsFileFinalDir, 7));
public String setText(String fileDir, int lineNum) {
String txt = "";
txt = io.readSpecificLine(fileDir, lineNum);
txt = switchCase(txt);
return txt;
}
switchcase()
只考虑你写的,这些都是从得到的值的文本文件是什么,以及他们翻译。所以如果该值为0,则它变成空格等。io.readSpecificLine();
仅用于从文件中获取文本行。这有帮助吗?
编辑2: 我只是裁切四周,发现如果我使用setText("");
设置JTextField的文本,然后使用getText();
它的工作原理。所以问题是,当我手动改变它,并使用getText();它不会工作。为什么?
没有看到更多的代码,包括JTextField的代码,这将很难提供帮助。 –
请参阅编辑 – PulsePanda
只需在执行任何控制功能之前尝试将文本打印到控制台,然后查看您是否获得了正确的结果。您的编辑仍然无法帮助...您可以从操作事件中粘贴代码。 – Mohsin