寻找一种高效的基于Java Swing的控制台

6
我正在寻找一款高效的Swing Java组件,可以直接插入我的应用程序UI中。我已经尝试使用Swing中的类(例如JTextArea),但它们并不高效,并且存在一些致命缺陷。此外,如果该组件具有标准控制台功能,如滚动锁定、清除控制台、颜色等,那将是很好的。编辑:忘记说了,这个控制台将会有大量的调试信息流入,需要完全可滚动。谢谢,Chris

你遇到了哪些严重的缺陷或性能问题? - Adamski
主要是速度问题。JTextArea组件似乎没有设计成能够快速接受如此大量的文本,因此会出现减速现象。此外,它会过早地删除文本,并且在输入时不允许用户滚动(据我所知)。结果就是你只能看到文本闪烁,而行数保持不变。 - Chris Dennett
我认为你应该用你真正想要的功能来替换“高效”这个词。 - Thorbjørn Ravn Andersen
好的,类似于Netbeans控制台这样的东西会很完美。但是它有很多依赖项。是否有类似于它打包在一个可供使用的jar文件中的东西? - Chris Dennett
2个回答

5
我看不出使用JTextPane有什么问题。它支持属性,你可以在每个文本添加到控制台时指定属性。清除它也很容易。当添加到滚动窗格中时,它还支持滚动。
您可以使用 Smart Scrolling添加滚动锁定。
此外,除非您从文档中明确删除文本,否则文本永远不会被删除,我不知道这是什么意思。
当输入代码在EDT上执行时,默认情况下文本会随着文本附加而自动滚动。可以通过上面链接中提供的示例来控制此滚动。
编辑:
但我仍然希望有一个库解决方案。
我不知道有任何解决方案可以自动为来自不同流的文本上色。

消息控制台 可能会给你一些想法。

(例如,检测行上的 [error] 前缀,并根据此着色行)

通过将 DocumentFilter 添加到文本窗格的文档中,可以轻松实现此操作。您可以在将文本插入文档时添加属性。


我成功解决了问题,原来是我在测试包中使用了一个类,导致我所做的任何更改都没有效果,让我认为JTextArea很烂:) 现在我有了一个快速工作的控制台,但我仍然希望有一个库解决方案,可以在控制台窗口周围放置酷炫的按钮来执行不同的操作,并自动对来自不同流的文本进行着色(使用编解码器来指示错误(即检测行上的[error]前缀)并根据此着色行)-这样的东西存在吗? :) - Chris Dennett
看起来上面的链接,标记为“posting”的已经失效了。 - JeffHeaton
@JeffHeaton,谢谢,我稍微修改了答案以涉及一个新话题。 - camickr

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接