【发布时间】:2012-09-24 17:32:20
【问题描述】:
我一直在寻找,我找不到任何人可以解决这个问题。我正在制作一个游戏,在那个游戏中,我有可编辑的控件。控件窗口是一个单独的 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);
}
问题是这样的:如果我更改最终的 JTextField attack 或任何其他的,然后单击提交,系统会打印出默认控件。例如,如果 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:
我只是在闲逛,发现如果我使用setText(""); 设置JTextField 文本,然后使用getText(); 它可以工作。所以问题是当我手动更改它并使用 getText();它不会工作。为什么?
【问题讨论】:
-
看不到更多代码,包括 JTextField 的代码,这将很难提供帮助。
-
在执行任何控制功能之前,只需尝试将文本打印到控制台,看看您是否得到正确的结果。您的编辑仍然无济于事..您能否从操作事件中粘贴代码。
-
我认为错误可能在于您更改值的方式。您也可以添加此代码吗?
-
请发SSCCE 重复您的问题。如果我可以将一些代码复制并粘贴到编辑器中,然后编译并运行它而无需任何额外工作,我将很乐意看一下。
-
同意SSCCE,你的Bounty简单没用,没有发布SSCCE,提到FileIO应该存储为局部变量,没有人知道你的文件,也不知道休息或代码,...需要剂量运气和勇气在这里发表评论或发送答案,对不起:-)
标签: java string swing io jtextfield