我有一个带有添加按钮的 JXTreeTable。该按钮按预期工作:它在末尾添加了一个新节点,其值(出于测试目的)被硬编码到我的程序中。该行:
modelSupport.fireChildAdded(new TreePath(root), noOfChildren-1, dataNode);
告诉 JXTreeTable 识别对 TreeTableModel 所做的更新,并相应地刷新。
然后我执行:
treeTable.changeSelection(treeTable.getRowCount()-1, 0, false, false);
自动选择这个新节点。这可以按预期工作,但我也希望它会自动滚动以使这个新节点出现,但事实并非如此。相反,它会滚动以仅显示倒数第二个节点,而将新节点隐藏在视图之外。
我还尝试使用技巧以编程方式滚动到最终记录。但是,这段代码:
JScrollBar vertical = scrollPane.getVerticalScrollBar();
vertical.setValue(vertical.getMaximum());
揭示了同样的问题。
奇怪的是,如果我将上述两个代码块中的任何一个附加到“滚动到底部”按钮,并在添加新节点后手动按下此按钮,一切正常!请任何人都可以隔离此错误的原因,或提供修复/解决方法吗?