質問
あるいは、書籍やwebサイト上の作成 JTable
?いつのカラムを自由に編集できます。これを継承 JCheckBox
コンポーネント(またこちら)を一つのテーブルのカラムだけでなく、テーブルを入れて JCheckBox
に基づいて編集可能 boolean
ます。
を持ってい JFCのSwingチュートリアルの第二弾 予だいがある場合その他の事例にも見習にどう対処すればよいかというテーブルです。のうのでjava"トレイルウェブサイトのナビゲーションとるのは、理に適っていると思います。
私を再度読み込んで、好奇心い発見がいかなる貢献ができるか。
解決
にカラムを編集可能にするをオーバーライド isCellEditable
方法の TableModel
.の作成 TableModel
かなりやすい場合は継承し AbstractTableModel
ていただきたいと思いますですが、最もシンプルな JTable
s.
しかし、対応を TableModel
の一部でしかない必要があります。実際に取得し、カスタムコンポーネント JTable
, を設定する必要があり、カスタムセルレンダリング.利用型カスタムコンポーネントを設定する必要があり、カスタムセル編集者。場合には、使用をややmodificatedバージョンのデフォルトのクラスです。
編集者
願いする場合がございったカスタムコンポーネントは簡単に利用団:新しいクラスの実施 TableCellEditor
, 戻る 新しい インスタンスのコンポーネント getCellEditorComponent
方法。のパラメータをこの方法は、電流値などの細胞座標、リンクのテーブルや天気なの細胞を選択します。
の TableCellEditor
もる方法を要求されたときに呼び出されるのユーザーの為の変化の細胞内容できる検証のユーザー入力、調整モデル)を解除または編集できるようになります。必ずお電話に stopEditing()
法エディタがプログラムにabort編集、その他のエディタコンポーネントは画面上で--今回は私のように2時間debug.
ご注意内 JTable
編集者や のみ エディタ受信イベントが盛りだくさん!を表示するボタンでも使用できない、レンダリング.ある機能ボタンを導入するために必要なエディタの修正 EventListeners
登録されます。登録リスナーをレンダリングでは何も行いません。
レンダリング
実施レンダリングではなく必要などについて説明していただけまにおうかがいますが、通常の時点でかいのを修正.レンダリングとは異なり、編集者、速重要です。 の getTableCellRendererComponent
のレンダリングは回毎にテーブルのセル! の成分によって返されるレンダリングは塗装に使用されるの細胞は相互作用とすることができれば、"再利用"は、次の細胞。つまり、調整のコンポーネント(例えばを使用 setText(...)
または setFont(...)
の場合は TextComponent
のレンダリングす ない インスタンスを生成新しいものが手軽に行うことができるcripple。
注意
このためのレンダリング、編集者の仕事に必要なもの JTable
するために使用されるレンダリング/editor.が基本的には二つの方法ではないかと思います。デフォルトに設定することができセルレンダリング/エディタ 一定タイプ を用い、それぞれの JTable
ます。この方法、お TableModel
ニーズに戻すこのタイプの getColumnClass(...)
法とは!デフォルトのテーブルモデル ない このまま返します Object.class
.いつstumped多くの人です。
の他の方法でセットのエディター/レンダリングでは明示的に設定することで、カラムそのものであって、 TableColumn
通 getTableColumn(...)
の方法 JTable
.これは多くの精巧なかでも、二つの異なるレンダリング/編集者のための単一のクラスです。E.g.モデルが二列のクラスの文字列が描画される完全に異なる方法でも一度使用 JLabel/DefaultRenderer
その他の使用 JButton
アクセス詳します。
JTable
そのカスタムレンダリングや編集者が 非常に 汎用性のものも多く、がん間違っています。幸運を祈っています。
利用テーブル に のSwingチュートリアル 必ず読み方customising JTables.特に、読みや読み直し メニューの詳細は後日発表され編集者やレンダリング で一般的には時間がかかりますようお願い申し上げます"をクリック.の例にカスタムレンダリングや編集者も非常に価値がある。
他のヒント
にしたいクラスへの拡張を行動でDefaultTableModel.することなく、独自に定義す。ィチュートリアルです sunのサイト.
このチュートリアルの javaのロビー りやすく案内します。オンライン スイングトレイルのためのJTable を参照することを示しています。たまスキャン全体を通してのものでよりよくない新しい常に良いですか?
れば利用しようと簡単に JTable
1列が編集可能なあけましておめでとうございますの欄に位置すが、常にデフォルトテーブルモデルや過負荷の isCellEditable
ます。
のようなこと:
myTable.setModel(new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
if (column == x) {
return true;
} else
return false;
}
});
のチェックボックスをレンダリングクラス
MyCheckBoxRenderer extends JCheckBox implements TableCellRenderer
つかの有用なクラス:
Package javax.swing.table
:
TableModel
-インタフェース tablemodel
AbstractTableModel
エクスペディアのキャンセルのクラスの拡張を作成するテーブルとカスタムデータ構造
DefaultTableModel
デフォルトテーブルモデルに対応できる arrays[]
や Vectors
を無効にする編集の任意のセルに必要なものをオーバーライド isCellEditable(int row, int col)
方法
テーブルにモデルを、オーバーライド"isCellEditable"と"setValueAt"機能についてのものです。
列の4つのカラムのために編集可能な細胞。
そのままダブルクリックし、細胞タイプ、
setValueAt()が呼ばれますと保存の値は、tableModelのい分野col4.
public ArrayList<XXXDO> tbmData = new ArrayList<XXXDO>(); //arraylist for data in table
@Override
public boolean isCellEditable(int row, int col) {
if (col == 4) {
return true;
} else {
return false;
}
}
@Override
public void setValueAt(Object value, int row, int col) {
if ((row >= 0) && (row < this.tbmData.size()) && (col >= 0) && (col < this.colNm.length)) {
if (col == 4) {
tbmData.get(row).col4= (String) value;
}
fireTableCellUpdated(row, col);
} else {
}
}