你好伙计堆叠器!我在为游戏创建适当的保存功能时遇到问题。我遇到的主要问题是捕获名为display的J文本区域内的所有数据。显示器反映了目前为止在游戏中所做的动作,并且在显示屏的顶部显示了#34;欢迎来到Togiz Kumalak"。
我的问题是,当我保存游戏时,它只会将第一行文本记录到文件而不是所有行。
一个例子是:
Welcome to Togiz Kumalak
Player 1 Cup 1
Player 2 Cup 3
等等。保存文件时,只显示顶行。
这是我当前保存侦听器的代码。
class SaveListener implements ActionListener
{
String a = display.getText();
JFileChooser myChooser= new JFileChooser();
public void actionPerformed(ActionEvent event)
{
String fileName;
myChooser.setCurrentDirectory(new File("."));
myChooser.showSaveDialog(null);
fileName = myChooser.getSelectedFile().getPath();
try
{
OutputStream file = new FileOutputStream(fileName);
PrintStream printStream = new PrintStream(file);
printStream.print(a);
printStream.close();
/* Version 11, 23.1. Scroll pane and text area support when saving. */
}
catch(IOException e)
{
System.out.println("Problem making or writing to an output stream.");
System.out.println(e);
}
}
}
答案 0 :(得分:2)
使用JTextArea API的write(...)
方法,而不是尝试创建自己的方法。
答案 1 :(得分:1)
..在为我的游戏创建正确的保存功能时遇到问题
考虑到“正确”这个词(我强调),我必须指出,保存/加载游戏的正确的方式是根据“游戏状态模型”而不是“游戏状态”模型粗略地翻译成文本行'。
根据数据的复杂性,可以通过多种方式保存游戏状态模型,但是应该使用非常不同的序列化方法(在代码中编码/解码数据的工作量较少),而不是使用此方法。