JTable |
Swing のその他の変更 |
JTable の変更の結果、バージョン 1.2 または JFC/Swing 1.1 用に書かれたコードをバージョン 1.3 で実行すると、次のような問題が発生する可能性があります。
TableColumn
のgetHeaderRenderer
メソッドは、デフォルトで null を返すようになったため、このメソッドを使ってデフォルトのヘッダレンダリングを取得することはできません。代わりに、JTableHeader
のgetDefaultRenderer
メソッドを使うようにコードを変更します。例については、Java チュートリアルの「How to Use Tables」を参照してください。- JTable のデフォルトのテキストエディタは、データ型についての機能が向上したため、常に文字列を指定する代わりに、適切な型の
setValueAt
オブジェクトを提供するようになっています。たとえば、整数型セルに対してsetValueAt
が呼び出された場合は、値は文字列ではなく整数型として指定されます。テーブルモデルを実装する場合は、新しいデータ型が考慮されるようにsetValueAt
メソッドを変更することが必要な場合もあります。セルのデータ型として使用されるクラスを実装している場合は、そのクラスのコンストラクタが文字列の引数を 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
// obsoletepublic void setRowHeight(int row, int height)
public int getRowHeight(int row)
JTableHeader 内
protected boolean updateTableInRealTime
// obsoletepublic boolean getUpdateTableInRealTime()
// obsoletepublic void setUpdateTableInRealTime(boolean flag)
// obsoletepublic void setDefaultRenderer(TableCellRenderer defaultRenderer)
public TableCellRenderer getDefaultRenderer()
protected TableCellRenderer createDefaultRenderer()
TableColumn 内
public final static String COLUMN_WIDTH_PROPERTY;
// obsoletepublic final static String HEADER_VALUE_PROPERTY;
// obsoletepublic final static String HEADER_RENDERER_PROPERTY
// obsoletepublic final static String CELL_RENDERER_PROPERTY
// obsoleteprotected TableCellRenderer createDefaultHeaderRenderer()
transient protected int resizedPostingDisableCount
// deprecatedpublic void disableResizedPosting()
// deprecatedpublic void enableResizedPosting()
// deprecated新規クラス -
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 ソフトウェア |