大佬教程收集整理的这篇文章主要介绍了JTable TableColumn - 拖动列时 modelIndex 的属性没有变化,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要检测用户何时对 Jtable
的列重新排序,以便保留和恢复该信息。根据 JavaDocs,将 propertychangelistener
添加到表列应该就足够了,例如
Jtable t = ...;
tablecolumn keyscolumn = t.getcolumnModel().getcolumn(0);
tablecolumn valuescolumn = t.getcolumnModel().getcolumn(1);
keyscolumn.addPropertychangelistener(new Propertychangelistener {
public voID propertyChange(PropertyChangeEvent E) {
System.out.println("PROPERTY: " + e.getPropertyname());
}
});
然而,虽然我收到 wIDth
和 preferreDWIDth
的更新,但重新排列列并不会触发任何可观察到的内容。我期待看到 @H_745_3@modelindex 的更新。做错了什么?
linux 上的 OpenJDK 11,尝试了不同的外观。
所以 @H_745_3@modelIndex 的 Tablecolumn
永远不会改变,因此没有属性改变。要观察运动,必须监听 TablecolumnModel
的 columnMoved
并过滤 e.getFromIndex != e.getToIndex
是视图索引,然后将它们映射回模型索引。 “如此简单”:-/
在 Scala 中
val tcm = t.getcolumnModel
tcm.addcolumnModelListener(new TablecolumnModelListener {
private def mkMap() = Seq.tabulate(t.getcolumnCount)(t.convertcolumnIndexToModel)
private var viewToModel = mkMap()
override def columnMoved(e: TablecolumnModelEvent): Unit = {
val viewFrom = e.getFromIndex
val viewTo = e.getToIndex
if (viewFrom != viewTo) {
val modelFrom = viewToModel(viewFrom)
val modelTo = viewToModel(viewTo )
println(s"columnMoved: drag column $modelFrom from pos $viewFrom to $viewTo")
viewToModel = mkMap()
assert (viewToModel(viewTo) == modelFrom)
}
}
override def columnAdded (e: TablecolumnModelEvent ): Unit = ()
override def columnRemoved (e: TablecolumnModelEvent ): Unit = ()
override def columnMarginChanged (e: ChangeEvent ): Unit = ()
override def columnSELEctionChanged (e: ListSELEctionEvent ): Unit = ()
})
以上是大佬教程为你收集整理的JTable TableColumn - 拖动列时 modelIndex 的属性没有变化全部内容,希望文章能够帮你解决JTable TableColumn - 拖动列时 modelIndex 的属性没有变化所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。