JTextPane - 如何创建滚动日志
我使用 JTextPane(在 JScrollPane 中)作为自定义日志记录系统的一部分。 (我需要多色输出,因此无法使用 JTextArea。)
我的日志记录部分可以正常工作,但我现在需要能够限制其内容,以便它不会在内存中不断增长。
没有直接的用户输入,因为所有日志都是系统生成的。
我需要做的是确定 JTextPane 何时达到指定的行数,然后能够在超过最大值时删除第一行。这将使我能够保留显示中最后“x”行的缓冲区。
我该怎么做呢?
I'm using a JTextPane (in a JScrollPane) as part of a custom logging system. (I needed multi-colour output so couldn't use JTextArea.)
I have the logging part of it working, but I now need to be able to limit its content so that it doesn't just grow in memory continuously.
There is no direct user input as all logs are system generated.
What I need to be able to do is to identify when the JTextPane had reached a specified number of lines, and then be able to delete the first line when the maximum is exceeded. This would allow me to keep a buffer of the last 'x' lines in the display.
How would I go about doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 DocumentFilter 并检查文档的长度。您还可以使用 Document 的 getText() 方法并计算字符串中的“\n”字符。
或者您可以重写文档的 insertString() 方法。如果达到最大可能的行数,只需调用remove(),然后调用super.insertString()
Use DocumentFilter and check the Document's length. Also you can use Document's getText() method and count "\n" chars in the String.
Or you can override insertString() method of the document. If max possible amount of lines is achieved just call remove() and then super.insertString()
试试这个小例子:
try this little Example: