我一直在寻找,我找不到任何人可以解决这个问题。我正在制作一个游戏,在那个游戏中,我有可编辑的控件。控件窗口是一个单独的 JFrame,当我单击确认按钮时,它应该将 JTextFields(保存控件)中的项目写入文件。但这不起作用,所以我让它打印包含值的arraylist。这是代码:
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);
}
问题是这样的:如果我更改最终的 JTextFieldattack
或任何其他的,然后单击提交,系统会打印出默认控件。例如,如果 JTextField 的值为 w、a、s、d、r、t、q,并且 i 将值 q 更改为 i,它会打印出 q。我究竟做错了什么?提前致谢!
编辑1:
文本字段的代码,并且FILES....
只是存储在不同类中的字符串。该类setText()
位于文本字段下方。
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:
我只是在四处闲逛,发现如果我通过使用设置 JTextField 文本,setText("");
那么使用getText();
它就可以了。所以问题是当我手动更改它并使用 getText(); 它不会工作。为什么?