0

追加ボタンのある JXTreeTable があります。ボタンは期待どおりに機能します。新しいノードが最後に追加され、(テスト目的で) プログラムにハードコードされた値が追加されます。この線:

modelSupport.fireChildAdded(new TreePath(root), noOfChildren-1, dataNode);

TreeTableModel に加えられた更新を認識し、それに応じて更新するように JXTreeTable に指示します。

次に実行します。

treeTable.changeSelection(treeTable.getRowCount()-1, 0, false, false);

この新しいノードを自動的に選択します。これは期待どおりに機能しますが、自動的にスクロールしてこの新しいノードが見えるようになることも期待していましたが、そうではありません。代わりに、最後から 2 番目のノードのみを表示するようにスクロールし、新しいノードはビューの外にわずかに隠れたままにします。

また、トリックを使用して、プログラムで最終レコードまでスクロールしようとしました。ただし、このコード:

JScrollBar vertical = scrollPane.getVerticalScrollBar();
vertical.setValue(vertical.getMaximum());

同じ問題を明らかにしました。

奇妙なことに、上記の 2 つのコード ブロックのいずれかを「下にスクロール」ボタンに接続し、新しいノードを追加した後にこのボタンを手動で押すと、すべて正常に動作します。このバグの原因を特定したり、修正/回避策を提供したりできる人はいますか?

4

2 に答える 2

0

JXTreeTable は次のようになります。

JXTreeTable.scrollPathToVisible(...)

これはうまくいきますか?

編集:スクロールペインは、新しく追加されたノード(ボタンをクリックしたとき)ですでに「レンダリング/ペイント」されているため、ボタンで動作すると思います。これに基づいて、内部の最大/最小計算(スクロールペインなど)が異なる場合があります.

于 2014-09-01T18:34:22.387 に答える