JTable |
Swing のその他の変更 |
JTable の変更の結果、バージョン 1.2 または JFC/Swing 1.1 用に書かれたコードをバージョン 1.3 で実行すると、次のような問題が発生する可能性があります。
TableColumn
のgetHeaderRenderer
メソッドは、デフォルトで null を返すようになったため、このメソッドを使ってデフォルトのヘッダレンダラーを取得することはできません。代わりに、JTableHeader
のgetDefaultRenderer
メソッドを使うようにコードを変更します。例については、Java チュートリアルの 「How to Use Tables」 を参照してください。- JTable のデフォルトのテキストエディタは、データ型についての機能が向上したため、常に文字列を指定する代わりに、適切な型の
setValueAt
オブジェクトを提供するようになっています。たとえば、Integer セルに対してsetValueAt
が呼び出された場合は、値は String ではなく Integer として指定されます。テーブルモデルを実装する場合は、新しいデータ型が考慮されるようにsetValueAt
メソッドを変更することが必要な場合もあります。セルのデータ型として使用されるクラスを実装している場合は、そのクラスのコンストラクタが String の引数を 1 つだけとるようにします。行および列のレイアウトの改善
次の点を変更しました。
- 列を多数含むテーブルでのパフォーマンスの向上
ヘッダレンダラーを列からテーブルヘッダへ移動することは、類似したヘッダレンダリングをテーブル単位で共有することになるため、パフォーマンスおよびサイズに対し多大な影響を与えます。- 各行の高さの動的な変更
このリリースで JTable 内のレンダリング機構に対する実質的なオーバーホールが行われたため、JTable の機能を十分に生かすことができるようになりました。- 非標準エディタコンポーネントの作成の単純化
非標準エディタコンポーネントの作成が困難であるというフィードバックが続けて寄せられたため、その対応として、AbstractCellEditor
クラスが含まれることになりました。- セル間隔の処理
JTable は、以前は、セル間隔の仕様を正しく実装できませんでした。セル間隔を変更すると、テーブル全体の高さなどのプロパティへの影響がいくつか出ていました。バージョン 1.3 では、セル間隔を変更すると、セルに対してインセットが与えられるという効果しかありません。インセットとは、セル間の間隔に合わせてレンダラーおよびエディタが、縮められる量のことです。詳細については、次のメソッドおよびフィールドの API ドキュメントを参照してください。「廃止」 は、使われなくなった API で、使用を避けるべきであるが、その API を使ってもコンパイル時に必ずエラーが発生するわけではないことを示しています。一方、「非推奨」の API は、使用されてないだけでなく、コンパイルエラーが発生することを示しています。
JTable 内
public void removeNotify()
protected void unconfigureEnclosingScrollPane()
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
protected boolean cellSelectionEnabled
// 廃止public void setRowHeight(int row, int height)
public int getRowHeight(int row)
JTableHeader 内
protected boolean updateTableInRealTime
// 廃止public boolean getUpdateTableInRealTime()
// 廃止public void setUpdateTableInRealTime(boolean flag)
// 廃止public void setDefaultRenderer(TableCellRenderer defaultRenderer)
public TableCellRenderer getDefaultRenderer()
protected TableCellRenderer createDefaultRenderer()
TableColumn 内
public final static String COLUMN_WIDTH_PROPERTY;
// 廃止public final static String HEADER_VALUE_PROPERTY;
// 廃止public final static String HEADER_RENDERER_PROPERTY
// 廃止public final static String CELL_RENDERER_PROPERTY
// 廃止protected TableCellRenderer createDefaultHeaderRenderer()
transient protected int resizedPostingDisableCount
// 非推奨public void disableResizedPosting()
// 非推奨public void enableResizedPosting()
//非推奨新規クラス -
javax.swing.AbstractCellEditor
既存クラス
DefaultCellEditor
は、AbstractCellEditor
を拡張するようになりました。新規 SizeSequence ユーティリティクラス
このクラスがリリースされる前、JTable 内の行の高さは常に固定されていました。JTable のスケーラビリティ要件 (行に対する非 O(N) 動作) を保持しつつ高さが可変の行を導入するには、この新規クラスが必要であり、一般にその方が有用であるという理由で public なクラスとされました。実際、JList のテーブル列および高さ可変行のどちらも、パフォーマンスを改善する目的で将来このクラスを使用することになるでしょう。
以下を参照してください。
javax.swing.SizeSequence
Copyright © 1995-98 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先:swing-feedback@java.sun.com。 これは購読リストではありません。 |
Java ソフトウェア |