Заголовки таблиц исчезают без ScrollPane - PullRequest
3 голосов
/ 27 января 2012

Я написал следующий простой код для проверки scala.swing.Table:

// java version "1.7.0_01"
// Scala code runner version 2.9.1.final
// Windows 7 Ultimate 64-bit
import scala.swing._

object TableHeaderVisible extends SimpleSwingApplication {
    override def top = new MainFrame {
        preferredSize = new Dimension(300, 200)
//      contents = new ScrollPane(table)
        contents = table
    }
    lazy val table = new Table(model, Seq("fruit", "animal")) // with Scrollable
    lazy val model = Array(
            Array("orange", "dog"),
            Array("apple",  "cat")).asInstanceOf[Array[Array[Any]]]
}

При этом не создаются заголовки таблицы, "фрукты" и "животные".

Почему?

Я могу сделать это с

contents = new ScrollPane(table)

не

contents = table.

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

Есть ли неправильный код ... в моем коде? или в scala.swing._ библиотеке?

Или есть ли основания оправдывать невидимые заголовки без ScrollPane?

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Ничего не знаю о скале.

В базовом Swing причина в том, что есть два отдельных компонента - JTable и необязательный JTableHeader. Хотя заголовок сконфигурирован для использования того же самого TableColumnModel, что и сама таблица (плюс некоторая разводка), его фактическое добавление к иерархии компонентов управляется таблицей, только если таблица содержится в scrollPane. Если он не находится в scrollPane, клиентский код отвечает за его вставку там, где это наиболее целесообразно, например. в панели над столом. На самом деле, сама таблица ничего не может сделать в этом случае, окружение может сильно отличаться

0 голосов
/ 27 января 2012

Swing изначально был написан для Java, который, безусловно, не имеет ленивые значения. Бьюсь об заклад, что если вы избегаете ленивых вальс, проблема исчезнет. Если Scala на самом деле намеревался поддерживать отложенные значения для библиотеки Swing, то это может быть ошибкой.

...