【问题标题】:restore jTable focus and position after removing a row from table model从表模型中删除一行后恢复 jTable 焦点和位置
【发布时间】:2012-01-15 22:23:36
【问题描述】:

java jTable 类的一个问题。其实我不是Java程序员,只是现在使用Java在Matlab中设计GUI。我所做的是:

  • 在 Matlab GUI 中内置了一个 jTable。
  • 我在jTable中使用/调用了一个RowFilter,它可以使jTable显示过滤结果。
  • 然后从这个过滤视图的结果中,我使用了表模型中的 removeRow 方法来删​​除一个或多个选定的行。

问题是每次如果我删除一行,表格内容会根据需要自行刷新,但滚动条会跳回到开头。

有谁知道如何抑制这种跳跃并保持jTable的原始视图?因为这有助于我不必向后滚动以找到我开始删除的原始位置。

感谢您的建议和帮助。

【问题讨论】:

  • 听起来 tableModel 触发了不正确的事件(f.i. dataChanged 而不是 rowDeleted)
  • 刚刚检查:与核心 JTable 和 DefaultTableModel 一起工作正常,所以你的代码有问题(@trashgod:确实需要手动干预:-)
  • 感谢您的建议。你能告诉我如何检查和纠正哪里错了吗?
  • @trashgod:意思是没有手册..
  • 注册一个 tableModelListener 并查看它在删除一行时会触发什么

标签: java swing matlab scroll jtable


【解决方案1】:

调用表的scrollRectToVisible()方法;将getCellRect() 返回的Rectangle 传递给所需的行。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2014-06-13
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多