TableViewerのヘッダ列の作成
「TableViewerを使った表コンポーネントの利用」の続きということで,表コンポーネントには欠かすことができないヘッダ列の作成を今回は紹介する。
ヘッダ列の作成は,TableViewerの話ではなく,SWTのTableコンポーネントの話になる。この辺もTableViewerがSWTのTableを隠蔽しないという点が現れている部分である。
ヘッダ列は,TableColumnクラスを使用して作成する。ちなみに,Tableオブジェクトの作り方は「TableViewerを使った表コンポーネントの利用」を参照されたし。
Table table = ...;
TableColumn column = new TableColumn(table, SWT.LEFT, 0);
column.setText("名前");
column.setWidth(200);
column = new TableColumn(table, SWT.RIGHT, 1);
column.setText("年齢");
column.setWidth(50);
作成したいヘッダの列の個数分,TableColumnクラスのインスタンスを作成する。その際,TableColumnクラスのコンストラクタに,対象となるTableオブジェクトを渡すことで,TableColumnオブジェクトをTableオブジェクトに関連付ける。さらにコンストラクタの引数として,ヘッダ列のスタイル値(文字列の表示位置:LEFT,RIGHT,CENTERのどれか)と,列のインデックスを渡す。
文字列の表示位置だが,なぜか一番左の列(インデックスが0)に関しては,CENTERやRIGHTを指定しても,それが無視されてLEFT(つまり左寄せ)になってしまう。Tableコンポーネントの仕様だと思われるが,真相は謎。
TableColumnオブジェクトができたら,setTextメソッドでヘッダ列に表示する文字列をセットし,さらにsetWidthメソッドで列の幅をセットする。もしヘッダ列の表示文字列で自動的に幅を設定したいときは,packメソッドを使うことで勝手に幅を設定してくれる。
ここでもう1つ謎。setWidthメソッドまたはpackメソッドを呼び出してあげないと,表に列が表示されなかった。幅の初期値が0で,幅を与えてあげないと0のままで表示されないのかな?と推測できるが,これも未調査なので不明である。
上記のコードを「TableViewerを使った表コンポーネントの利用」で取り上げた例に追記してビューを表示したときのスナップショットを紹介しておく。
ちなみに,TableViewerオブジェクトを作る前でも作った後でも,上記のヘッダ列の作成は可能である。
| 固定リンク
この記事へのコメントは終了しました。
コメント