我建立与具有类似功能到Twitter的Swing桌面应用程序。 我有其中“鸣叫”显示在“饲料”的页面。
我有一个JPanel了“微博”,并要动态地显示新进来的通过将新的“鸣叫”在JPanel的顶部,向下移动旧的。 我试图用MigLayout做到这一点通过jpanel.add(tweet, "cell 0 0, wrap")
然而,这并没有如预期而努力,为了得到它与我想的布局显示我不得不打电话jpanel.revalidate()
这不是理想的,因为可能有很多微博在每一秒来重划面板可以说是相当缓慢的。 反正我有可以添加新的“鸣叫”在面板的顶部没有重绘?
虽然动态布局是可能的,如图这里和在这里 ,我会使用一列JTable
与TableModel
反映要下推堆效果,或许一个具有内部Queue<Tweet>
JTable
渲染效率,并且部件工作良好的JScrollPane
。
简短的回答,没有。 说真的,花点时间去思考的问题。 “我想添加新的内容,但不更新屏幕”,可行性如何,你认为是什么?
你将不得不最终执行某种绘画。 问题是如何频繁。
然而...
随着一些简单的技术(和建模),您可以“合并”更新成批次,允许重绘要有意义的多(而不是画每一个新的鸣叫,你画一个批次)。
你可以使用像一个SwingWorker的做到这一点。 基本上publish
的鸣叫,并允许process
方法来处理后加入块。