【问题标题】:Looking for an efficient Java Swing based console寻找一个高效的基于 Java Swing 的控制台
【发布时间】:2011-01-20 17:30:28
【问题描述】:

我正在寻找一个高效的 Swing Java 组件,我可以将其插入到我的应用程序 UI 中。我已经尝试在 Swing 中使用 JTextArea 等类,但无济于事;它们根本不够高性能,并且有任何严重的缺点。此外,如果它具有标准的控制台功能,例如滚动锁定、清晰的控制台、颜色等,那就太好了。

编辑:忘了说,这个控制台会有很多调试信息流入,它需要完全可滚动。

干杯,
克里斯

【问题讨论】:

  • 您遇到了哪些严重的缺陷/性能问题?
  • 速度问题,主要是。 JTextArea 组件似乎没有被设计为如此快速地接受如此大量的文本,因此您会变慢。另外,它会过早地删除文本,并且不允许用户在输入时滚动(afaik)。效果是您只看到文本闪烁,而行数保持不变。
  • 我认为您应该将“高效”一词替换为您非常想要的功能。
  • 嗯,像 Netbeans 控制台这样的东西会很完美。但这有很多依赖。有没有类似的东西装在罐子里准备使用?

标签: java swing text console components


【解决方案1】:

我看不出使用 JTextPane 有什么问题。它支持您可以在将每段文本添加到控制台时指定的属性。清除它显然也很容易。添加到滚动窗格时,它还支持滚动。

您可以使用Smart Scrolling 添加滚动锁定。

另外,它会过早删除文本并且

不知道这意味着什么,因为除非您专门从文档中删除文本,否则永远不会删除文本。

不允许用户滚动 正在输入输入(afaik)。这 效果是你只看到文字 行数同时闪烁 保持不变。

默认情况下,假定代码在 EDT 上执行,文本会在文本附加到文档时自动滚动。这种滚动可以通过上面链接中提供的示例来控制。

编辑:

但我仍然想要图书馆解决方案

我不知道

自动着色文本来自 不同的流

Message Console 可能会给你一些想法。

(即,检测 [error] 前缀 线)和着色线基于 这个)

这很容易通过将 DocumentFilter 添加到文本窗格的 Document 来完成。您可以在将文本插入文档时添加属性。

【讨论】:

  • 我设法解决了这个问题,结果证明我在我的测试包中使用了一个类,这导致我所做的任何更改都没有效果,让我觉得 JTextArea 很糟糕: )所以,现在我有一个快速工作的控制台,但我仍然想要一个库解决方案,在控制台窗口周围有很酷的按钮来做不同的事情和自动着色来自不同流的文本(使用编解码器来指示错误(即检测[错误] 行上的前缀)并基于此对行进行着色)-这样的事情存在吗? :)
  • 看起来像上面的链接,标记为“发布”已损坏。
  • @JeffHeaton,谢谢,我稍微更改了答案以引用一个新主题。
【解决方案2】:

请务必阅读Event Dispatching Thread (EDT) in swing

顺便说一句:一个简单的搜索“java swing console”会给你很多提示,或者你可以使用/调整 beanshell textfield 这也是一个 jtextfield ...

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多