0
|
Carlo del Mundo · 技术社区 · 14 年前 |
![]() |
1
2
我认为最好是根据文件的长度获取一个字节块,然后释放文件并解析ByteArrayInputStream(而不是试图直接从文件中读取)。 因此,使用RandomAccessFile#read(byte[]),并使用返回的文件长度调整缓冲区大小。您并不总是显示文件的确切结尾,但这种轮询算法应该是这样的。 顺便说一下,这个算法很糟糕——你在一个疯狂的紧循环中运行IO操作——对File#length()的调用将被阻塞,但不会太多。希望这个程序能让你的应用程序在CPU方面达到极限。我没有必要为您提供更好的解决方案(实际上,我确实让源应用程序写入流而不是文件—但我认识到这并不总是可行的)。 除了上面提到的,您可能还需要引入一个轮询延迟(每个循环让线程休眠100毫秒——在我看来,这就像是在向GUI显示一样——100毫秒的延迟不会伤害任何人,而且会大大提高swing操作的性能)。 最后一个问题:您正在调整Swing组件,因为(我希望)代码没有在EDT上运行。使用SwingWorker#invokeLater()更新文本窗格。 |
![]() |
2
0
看来我找到了问题并找到了解决办法。 在else if语句下:
这就是问题所在。myTextPane(JTextPane的派生类)的append(String)方法在每一个错误的行append上调用“setCaretPosition()”!!
一个简单的解决方案是创建一个StringBuffer类并附加“curLine”,直到raf.readLine()读取空值。 然后,附加StringBuffer和voila。。。不再阻止setCaretPosition()! 感谢凯文把我带向正确的方向。 |
![]() |
3
0
|
![]() |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
![]() |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
![]() |
Bastien L. · 多Linux Grafana集成 2 年前 |