【发布时间】:2012-10-11 09:38:22
【问题描述】:
我们被分配创建一个简单的编译器作为家庭作业,它将接受一组指令(包含变量、条件、跳转等)并评估它们。这已经完成了,但我想我会让我的程序更……“闪亮”,并添加从文本文件加载指令的能力,只是为了用户舒适;但是,似乎JTextArea 的append () 方法似乎并不喜欢我,因为它什么也没做。以下是相关代码:
BufferedReader bufferedReader;
File file;
FileDialog fileDialog = new FileDialog (new Frame (), "Open File", FileDialog.LOAD);
String line;
fileDialog.setVisible (true);
if (fileDialog.getFile () != null) {
file = new File (fileDialog.getDirectory () + fileDialog.getFile ());
input.setText (""); // delete old first
try {
bufferedReader = new BufferedReader (new FileReader (file));
line = bufferedReader.readLine ();
while (line != null) {
input.append (line);
System.out.println (line);
line = bufferedReader.readLine ();
}
} catch (IOException ioe) {
ioe.printStackTrace ();
}
}
(我使用 Awt 的 FileDialog 而不是 Swing 的 JFileChooser,因为它在 Mac 上看起来更好,如 Apple's official recommendation 所示。)
此代码中使用的input 变量指向JTextArea 实例。有趣的是——文件读取部分必须完美无缺,因为我可以看到文件内容被写入标准输出,这要归功于while 循环中的System.out.println () 调用。但是,JTextArea 中没有出现任何内容,我已经尝试了我在 StackOverflow 上找到的所有现有解决方案——包括调用 repaint ()、revalidate () 和 updateUI () 方法。
我错过了什么?
【问题讨论】:
-
“我正在使用 Awt 的 FileDialog 而不是 Swing 的 JFileChooser,因为它在 Mac 上看起来更好......” 你在为 Windows 和 *nix 做什么?如果只针对 Mac,为什么要使用 Java 而不是 ..Cocoa 或 OS X 原生 GUI 工具包的名称?
-
“我们被分配了..一个家庭作业..这已经完成了,但我想我应该让我的程序多一点......“闪亮””我想说这之前,但被问题的技术方面分心。如果是家庭作业,时间通常最好花在提高源代码的可读性、添加(相关的)cmets 或编写证明代码的测试上。最好提交没有可见错误的编写良好的代码,而不是带有红色条纹和金色星星的代码会中断,效率低下且编写不佳。 :)
-
@AndrewThompson 我主要针对 Mac 平台,使用 Java 仅仅是因为我知道它比 Objective-C 和 Cocoa 稍微好一点:-) 我尝试使用 JTextComponent.read (Reader, Object) 但是我不确定我是不是doing it right,我可以请你再看一下我的代码吗?问题仍然存在,即使进行了此修改,我的文本区域中也没有出现任何内容。
-
重新。新代码。将其编辑为特定于该方法的新问题。生成一个SSCCE 应该需要不到 40 行代码。
标签: java swing file-io append jtextarea