※ ChatGPTを利用し、要約された質問です(原文:Swing 編集不可でも選択可能なJTableセルの設定方法)
Swing 編集不可でも選択可能なJTableセルの設定方法
2005/02/02 11:53
このQ&Aのポイント
JTableのセルを編集不可にしつつ行選択可能にする方法を教えてください
JTableCustomクラスを作成し、setEditFalseメソッドを使用することでセルの編集を不可にすることができます
他の方法でJTableのセルを編集不可にしつつ行選択可能にする方法を教えてください
Swing 編集不可でも選択可能なJTableセルの設定方法
テーブルデータ編集不可でも行選択可能なJTableの設定方法をお教えいただきたいです。
私が試した方法では一つ問題点があり困っております。
その問題点とは、
セルをダブルクリックするとセルがへこみ、
そのまま別イベントでプログラム内部からテーブルへ書き込みをすると、
上記へこんだセルのみ変更が反映されないのです。
JTableを継承したJTableCustomクラスを作成し、
テーブルセル編集の不可設定を行うsetEditFalseメソッドを作成しました。
(補足:JTableのEnabledをfalseにすると行選択ができなくなってしまうので、
CellEditerを使用しています)
public class JTableCustom extends JTable {
public JTableCustom() {
super();
this.setModel(new DefaultTableModel());
this.setSize(300,200);
}
/**
* テーブルセルの編集ができないように設定します。<br>
*/
public void setEditFalse(){
JTextField tf = new JTextField("");
tf.setEditable(false);
DefaultCellEditor dce = new DefaultCellEditor(tf);
TableColumnModel tcm = this.getColumnModel();
for (int i = 0; i < tcm.getColumnCount(); i++){
tcm.getColumn(i).setCellEditor(dce);
}
}
}
JTableCostomインスタンス作成後、上記メソッドを呼び設定を行います。
上記メソッドにセルがへこまないように設定する方法、
もしくは別の方法で上記機能を満たすものがあれば教えていただきたいです。
よろしくお願い致します。
質問の原文を閉じる
質問の原文を表示する
お礼
回答ありがとうございます。 なるほど、そのような方法があったんですね。 先ほどDefaultTableModelのオーバーライドしで試したところ、表題の問題が解決しました。 大変助かりました、ありがとうございました。