4

我正在使用 Swing 构建一个与 Twitter 功能相似的桌面应用程序。我有一个显示“推文”的“提要”页面。

我在 JPanel 中有“推文”,并希望通过在 JPanel 顶部放置新的“推文”并将旧的推文向下移动来动态显示新的推文。我试图通过使用 MigLayout 来做到这一点, jpanel.add(tweet, "cell 0 0, wrap")但这并没有按预期工作,为了让它以我想要的布局显示,我必须调用jpanel.revalidate().

这并不理想,因为每秒可能会有很多推文,并且重新绘制面板可能会很慢。无论如何我可以在面板顶部添加新的“推文”而不重绘?

4

2 回答 2

9

简短的回答,不。说真的,花点时间思考这个问题。“我要加新内容,但不更新画面”,你觉得可行吗?

你最终将不得不进行某种绘画。问题是多久一次。

然而...

通过一些简单的技术(和建模),您可以将更新“合并”成批次,从而使重绘更有意义(而不是绘制每条新推文,您绘制一个批次)。

您可以使用SwingWorker之类的东西来执行此操作。基本上publish是推文并允许该process方法处理之后添加块。

于 2012-08-13T03:59:21.560 回答
9

虽然动态布局是可能的,如此处和此处所示但我会使用单列JTable和 aTableModel来反映您想要的下推堆栈效果,也许一列具有内部Queue<Tweet>. JTable渲染效率很高,并且组件在JScrollPane.

于 2012-08-13T04:35:29.500 回答