首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在scala.swing.Table中使用TableRowSorter

在scala.swing.Table中使用TableRowSorter
EN

Stack Overflow用户
提问于 2012-03-07 01:25:42
回答 1查看 701关注 0票数 3

我正在开发一个简单的UI,它有一个scala.swing.Table组件。我想使用java.swing.table.TableRowSorter对表行进行排序。Table类没有提供任何使用行排序器的API,所以我尝试直接在对等点上设置它

代码语言:javascript
复制
val table = new Table(height, width) {
  import javax.swing.table._
  rowHeight = 25
  autoResizeMode = Table.AutoResizeMode.NextColumn
  showGrid = true
  gridColor = new java.awt.Color(150, 150, 150)
  model = myModel

  peer.setRowSorter(new TableRowSorter(model))
}

现在,当我单击列标题时,我会看到小的向上/向下箭头,但是表内容不会根据新的排序顺序进行更新。如果我单击列标题时选择了某一行,则根据排序顺序,选择内容将移动到所选内容所在的行。我已经添加了自定义比较器,它们会按预期被调用,所以排序确实发生了,但是表并没有更新。

我是不是遗漏了什么东西来更新表?访问底层JTable对等对象是否合法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 07:27:40

回答我自己的问题。

scala.swing.Table类不支持Java6中添加的行排序功能。请参阅Table.scala源文件的第277行:

代码语言:javascript
复制
def apply(row: Int, column: Int): Any = model.getValueAt(row, viewToModelColumn(column))

// TODO: this is Java 6 stuff
// def apply(row: Int, column: Int): Any = model.getValueAt(viewToModelRow(row), viewToModelColumn(column))
//def viewToModelRow(idx: Int) = peer.convertRowIndexToModel(idx)
//def modelToViewRow(idx: Int) = peer.convertRowIndexToView(idx)

我将scala.swing文件移动到一个不同的包中,并将其构建到我的项目中,然后取消注释掉Java6的东西,注释掉旧的apply()方法,现在表排序可以工作了。

这是关于这个错误报告的a link。Java 6代码是在8月份添加的,然后又被删除,直到Scala库版本切换到Java 6。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9588765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档