2011-11-07 7 views
4

私はデータベースを管理するためのScalaプログラムを作成しており、すべてのデータを2次元のArrayBufferに描画しています。行0は列名で、後続の行はテーブルの各エントリの情報を含みます。 これをテーブルに配置しようとすると、列ヘッダーの割り当てについてはどうなりますか?Scalaテーブルで列名を設定するにはどうすればよいですか?

構文の提案は非常に高く評価されます。

擬似コード:

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"} 

私はデータ(0)列ヘッダーを記述し、それに続く行は、テーブル内の行を記述しますが、私はどのように把握することはできません。表にこれを入れたいです行ヘッダーを設定します。

+0

おそらく、この質問に情報を追加する必要があります。私はあなたがしようとしているものの擬似コードでさえ助けるかもしれないと思います。 – huynhjl

答えて

0

あなたがスイングの話をしていると仮定すると、スクロールペインの中にあなたのテーブルを置き、示された配列バッファに基づいてテーブルモデルを作成すると、最初の行はデフォルトでカラム名として扱われます。

+0

テーブルモデルをセットアップする方法がわかりません。そのようにして私の弱い試みは、Code-Not-Running症候群に繋がりました。 2.8のこれの構文は何ですか? \ n今のところ、私はテーブルのデータを更新する簡単な方法を見つけることができなかったのでforループのセルを単に更新していますが、これは "A"、 "B" 、 "C"、 "D"などを入力してください。 – Museless

+0

[this code](https://github.com/asinghal/SlateIDE/blob/master/src/net/slate/gui/ResultsTabbedPane)を参照してください。スカラ) – aishwarya

3

表にデータを置くための最も簡単な方法は、そのコンストラクタを使用することです。ここ

new Table (rowData: Array[Array[Any]], columnNames: Seq[_]) 

少しトリッキーな事はArray[String]ではないことを意味し、(Why doesn't the example compile, aka how does (co-, contra-, and in-) variance work?を参照)の配列は共変ではないということですサブタイプ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

それはまさに私が望むように聞こえるが、配列の配列の代わりにArrayBuffersを使用している。問題があるかどうかはわからないが、バッファに表示するコードを入力すると、私が理解できないArrayIndexOutOfBoundsエラーが発生し、そのコードからどのように描画されているのか分かりません。これはArrayBuffersを使用しているのですか、それとも他に何か不足していますか? – Museless

+0

@Museless上記のコードは、ArrayBuffersの場合と同様に動作しますが、ArrayBuffersのポイントはそれらが拡張可能であるため、固定数の列に対して使用する点はありません。上記のコードが境界外のエラーを出す方法はありません。例外は、それが発生している行を示すはずです。 –

関連する問題