java – JTextArea的append()方法似乎不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JTextArea的append()方法似乎不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1629字,纯文字阅读大概需要3分钟。
内容图文
我们被分配创建一个简单的编译器作为家庭作业,将采取一组指令(包含变量,条件,跳转等)并评估它们.这已经完成了,但我想我会让我的程序更多……“闪亮”,并添加从文本文件加载指令的能力,只是为了用户的舒适;然而,似乎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所示.)
此代码中使用的输入变量指向JTextArea实例.有趣的是 – 文件读取部分必须完美无缺,因为我可以看到文件内容被写入标准输出,这要归功于while循环中的System.out.println()调用.但是,JTextArea中没有出现任何内容,我已经尝试了我在StackOverflow上找到的所有现有解决方案 – 包括调用repaint(),revalidate()和updateUI()方法.
我错过了什么?非常感谢您的回答!
解决方法:
代码可能在事件处理循环中调用,您无法绘制.
人们通常会使用
final String line = bufferedReader.relineadLine();
// final+local var so usable in Runnable.
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
input.append(line + "\n");
}
}
不幸的是,它需要注意放置invokeLatere的位置(作为循环).更好地使用@ AndrewThompson的解决方案.
内容总结
以上是互联网集市为您收集整理的java – JTextArea的append()方法似乎不起作用全部内容,希望文章能够帮你解决java – JTextArea的append()方法似乎不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。