4

Twitterと同様の機能を備えたSwingを使用してデスクトップアプリを構築しています。「ツイート」が表示される「フィード」ページがあります。

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

動的なレイアウトは可能ですが、ここここに示すように、必要なプッシュダウンスタック効果を反映するJTableaを含む1列を使用します。おそらく、内部に。レンダリングは効率的であり、コンポーネントはでうまく機能します。TableModelQueue<Tweet>JTableJScrollPane

于 2012-08-13T04:35:29.500 に答える