gpt4 book ai didi

java - (J)尽管启用了自动行排序器并使用了可比数据,但表仍未排序

转载 作者:行者123 更新时间:2023-11-30 06:13:58 25 4
gpt4 key购买 nike

我无法对以下 Swing TableView 进行排序。虽然我确实让列标题上的小三角形翻转,但表格内容不会根据排序状态进行任何不同的刷新:

import scala.swing._

val data = Array(
Array("a", 4, 8.9),
Array("b", 7, 2.3),
Array("c", 1, 5.6)
).map(_.map(_.asInstanceOf[AnyRef]))

val m = new javax.swing.table.DefaultTableModel(data,
Array[AnyRef]("string", "int", "double")) {

override def getColumnClass(c: Int): Class[_] = c match {
case 0 => classOf[java.lang.String ]
case 1 => classOf[java.lang.Integer]
case 2 => classOf[java.lang.Double ]
}
}

val t = new Table
t.model = m
t.peer.setAutoCreateRowSorter(true)

new Frame {
contents = new ScrollPane(t)
pack().centerOnScreen()
open()
}

enter image description here

我已经使用不同的外观(屏幕截图显示了 Nimbus)和 JDK(OpenJDK 6、OpenJDK 7)对此进行了测试。此外,我有一个自定义树表组件,可以毫无问题地进行排序,所以错误一定出在上面的某个地方。

最佳答案

这是 Scala-Swing 中的一些错误。为什么我不惊讶?!

import scala.swing._

type I = java.lang.Integer
type D = java.lang.Double

val data = Array[Array[Object]](
Array("a", 4:I, 8.9:D),
Array("b", 7:I, 2.3:D),
Array("c", 1:I, 5.6:D)
)

val m = new javax.swing.table.DefaultTableModel(data,
Array[AnyRef]("string", "int", "double")) {

override def getColumnClass(c: Int): Class[_] = data(0)(c).getClass
}

val tj = new javax.swing.JTable(m) // !!!
tj.setAutoCreateRowSorter(true)
val t = Component.wrap(tj) // !!!

new Frame {
contents = new ScrollPane(t)
pack().centerOnScreen()
open()
}

可能是 this bug尽管标题说列排序受到影响(文本表明提交者正在谈论行排序)。我的猜测是渲染器包装在 viewToModel/modelToView 方面被破坏了。


编辑:确认。只需要

val t = new Table {
// disable broken renderer
override lazy val peer: JTable = new JTable with SuperMixin
}

关于java - (J)尽管启用了自动行排序器并使用了可比数据,但表仍未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31092309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com