3

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 なしで非表示のヘッダーを正当化する理由はありますか?

4

2 に答える 2

2

scalaについて何も知りません。

基礎となる Swing には、JTable とオプションの JTableHeader という 2 つの異なるコンポーネントがあるためです。ヘッダーは、常にテーブル自体と同じ TableColumnModel を使用するように構成されていますが (さらにいくつかの配線)、コンポーネント階層への実際の追加は、テーブルが scrollPane に含まれている場合にのみ、テーブルによって管理されます。それが scrollPane にない場合、クライアント コードは、最も意味のある場所、つまりテーブルの上のパネルに挿入する責任があります。実際、その場合、テーブル自体が合理的にできることは何もなく、周囲が大きく異なる可能性があります

于 2012-01-27T15:19:04.797 に答える
0

Swing はもともと Java 用に作成されたものであり、Java には遅延 valがまったくありません。私の賭けは、怠惰な val を回避すれば、問題がなくなるということです。Scala が実際に swing ライブラリの遅延値をサポートすることを意図していた場合、これはバグである可能性があります。

于 2012-01-27T14:52:45.777 に答える