使用Swing动态重新排列布局

nom*_*el7 5 java layout swing miglayout

我正在使用具有与Twitter类似功能的Swing构建桌面应用程序.我有一个"提要"页面,其中显示"推文".

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

这并不理想,因为每秒都会有很多推文进入,重新绘制面板可能会非常慢.无论如何我可以在面板的顶部添加新的"推文"而无需重新绘制?

Mad*_*mer 10

简短的回答,没有.说真的,花点时间思考这个问题."我想添加新内容,但不更新屏幕",您认为这有多可行?

你最终将不得不进行某种绘画.问题是频率如何.

然而...

通过一些简单的技术(和建模),您可以将更新"合并"到批处理中,从而使重绘更有意义(而不是绘制每个新推文,您绘制一个批处理).

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


tra*_*god 10

尽管动态布局是可能的,如此此处所示,但我使用的是一列JTable,TableModel它反映了您想要的下推堆栈效果,也许是一个内部的Queue<Tweet>.JTable渲染是有效的,并且该组件在a中运行良好JScrollPane.