Как настроить имена столбцов в таблице Scala? - PullRequest
4 голосов
/ 08 ноября 2011

Я пишу программу Scala для управления базой данных и перетянул все данные в двухмерный ArrayBuffer, где строка 0 - это имена столбцов, а последующие строки содержат информацию для каждой записи в таблице.При попытке поместить это в таблицу, как мне назначить заголовки столбцов?

Синтаксические предложения будут очень полезны.

Псевдокод:

Data=ArrayBuffer()
Data(0)={"Name","Birthday","ID"}
Data(1)={"Bob", "07/19/1986", "2354"}
Data(2)={"Sue", "05/07/1980", "2355"}
Data(3)={"Joe", "08/12/1992", "2356"}
Data(4)={"Jim", "11/20/1983", "2357"}

Я хочу поместить это в таблицу, где Data (0) описывает заголовки столбцов, а последующие строки описывают строки в таблице, но я не могу понять, как установить заголовки строк.

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011

Самый простой способ поместить данные в таблицу - это использовать ее конструктор:

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

Редактировать: вы также можете использовать приведение: data.tail.toArray.asInstanceOf[Array[Array[Any]]], которое более эффективно, чем отображение.

0 голосов
/ 08 ноября 2011

при условии, что вы говорите о свинге, если вы поместите свою таблицу в область прокрутки и создадите модель таблицы на основе показанного буфера массива, первая строка будет принята как имя столбца по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...