我只是想知道如何将基于文本的控制台游戏制作成可执行的 jar。
根据我在本网站其余部分看到的内容,我需要使用 JTextField 和 JTextPane。我也知道要使其可运行,需要创建自己的控制台。我不在乎它有多复杂,只要它足够简单易懂即可。如果这是前进的方式,请您指出正确的方向来学习如何实现这一点。
如果这与其他地方的问题重复,请指出我的方向;我已经搜索过,但找不到任何简单的问题。
最佳答案
对于控制台,您可以从命令行运行它,也可以像您说的那样制作一个 GUI 并让它像控制台一样工作。
GUI 可以通过两种方式完成:
- 创建一个简单的 GUI,其中包含用于输出的文本框和用于输入的 1 行。添加方法来写入和获取行(分别)
- 创建另一个简单的 GUI 和一个扩展 PrintStream 的类。覆盖 PrintStream 类的写入方法,让它们写入您创建的 JTextPane。遵循 InputStream (System.in) 的相同格式。您可以通过 System.setIn(InputStream) 和 System.setOut(PrintStream) 设置它们。这种方法的结果更复杂,但给人的感觉更完整。
关于 #2 的更多信息: @Jordan.McBride System 类中的所有内容均由 JRE 定义。在您的程序运行之前,JRE 将准备您的程序可能调用的 System 类的所有元素。这样做时,它会创建一个 PrintStream 对象并告诉它写入控制台。您的程序可以使用 System.out 调用此类。同样,JRE 也创建一个 InputStream 对象并将其分配给控制台窗口,您可以通过 System.in 引用它。 Java 允许您通过 System.setIn(..) 和 System.setOut(..) 将这些 Stream 类替换为您自己的类。这在您的程序 GUI 失败时非常有用,您不必显示用户不友好的控制台来显示错误。
通过创建自己的类来覆盖 PrintStream 和 InputStream 类,您可以重定向数据流向的位置。查看 PrintStream 类的 API here . println() 和 print() 方法都调用 write() 函数。为了简单起见,我只会重写 print 和 println。在你重写的函数中,你可以有像
这样简单的东西public void println(String outstr)
{
this.textBox.setText(this.textBox.getText() + outStr + "\n");
}
您当然必须有一个 textBox 的实例字段,以便它知道在哪里写。
关于java - 将基于文本的游戏制作成可执行的 jar - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358693/