Самый простой способ поместить данные в таблицу - это использовать ее конструктор:
new Table (rowData: Array[Array[Any]], columnNames: Seq[_])
Немного хитроумно здесь то, что массивы не являются ковариантными (см. Почему пример не компилируется, иначе как (со-, противо- и не-) дисперсия работает? ), что означает, что Array[String]
есть , а не подтип Array[Any]
.Так что вам нужен какой-то способ превратить одно в другое: map
делает свою работу.
Кроме того, для отображения имен столбцов необходимо поместить таблицу в ScrollPane.
import swing._
import collection.mutable.ArrayBuffer
object Demo extends SimpleSwingApplication {
val data = ArrayBuffer(
Array("Name","Birthday","ID"),
Array("Bob", "07/19/1986", "2354"),
Array("Sue", "05/07/1980", "2355")
)
def top = new MainFrame {
contents = new ScrollPane {
contents = new Table(
data.tail.toArray map (_.toArray[Any]),
data.head
)
}
}
}
Даст вам таблицу:
![table](https://i.stack.imgur.com/nKhIK.png)
Редактировать: вы также можете использовать приведение: data.tail.toArray.asInstanceOf[Array[Array[Any]]]
, которое более эффективно, чем отображение.