- PR -

JTableでチェックボックス

1
投稿者投稿内容
104
会議室デビュー日: 2004/01/21
投稿数: 17
投稿日時: 2004-02-24 22:05
こんにちわ
104です

JTableでのチェックボックスについて質問があります

sunの公式HPを見てAbsutractTableModelを実装して
チェックボックスの表示を行ったのですが
表示は成功したのですが、クリックして何もおきません
なぜか原因が不明です
わかる方いらっしゃいましたら ご教授お願いします
下記にAbsutractTableModelを実装したものを書いておきます

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.SwingUtilities.*;
import javax.swing.table.*;

public class FooTableModel extends AbstractTableModel {
// テーブルカラム名。
private String[] columnNames;
// テーブルデータ。
private Object[][] data = new Object[0][];

/**
* コンストラクタ。
* @param columnHadder テーブルのカラムヘッダーに表示する文字列の配列を指定。
*/
public FooTableModel(String[] columnHadder) {
this.columnNames = columnHadder;
}
/**
* カラム数を返す。
* @return カラム数。
*/
public int getColumnCount() {
return columnNames.length;
}

/**
* 行数を返す。
* @return 行数。
*/
public int getRowCount() {
return data.length;
}

/**
* カラムの名称(タイトル)を返す。
* @param int 名前を知りたいカラム位置。
* @return カラム名称(タイトル)。
*/
public String getColumnName(int col) {
return columnNames[col];
}

/**
* 指定されたセルのデータを返す。
* @param int 行位置。
* @param int カラム位置。
* @return 指定されたセルのデータ。
*/
public Object getValueAt(int row, int col) {
return data[row][col];
}

/**
* 指定されたカラムに格納されているデータの型を返す。
* @return 指定されたカラムに格納されているデータの型。
*/
public Class getColumnClass(int c) {
Class cls = null;
try {
cls = getValueAt(0, c).getClass();
} catch (Exception e) {
return String.class;
}
return cls;
}

/**
* 指定された位置のセルを編集可能にするかどうかの判定を行う。
* @param int 行位置。
* @param int カラム位置。
* @return 指定された位置のセルを編集可能にするかどうかの判定結果。
*/
public boolean isCellEditable(int row, int col) {
return false;
}

/**
* 指定されたセルにデータを設定する。
* @param Object 設定したデータ。
* @param int 行位置。
* @param int カラム位置。
*/
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}

/**
* テーブルモデルにデータを設定する。
* @param data 設定したいデータ。
*/
public void setData(Object[][] data) {
this.data = data;
fireTableDataChanged();
}
/**
* 行数を返す。
* @return 行数。
*/
/* public void setRowCount(int i) {
this.data = new Object[0][i];
}*/
}
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2004-02-25 01:33
引用:

104さんの書き込み (2004-02-24 22:05) より:
sunの公式HPを見てAbsutractTableModelを実装して
チェックボックスの表示を行ったのですが
表示は成功したのですが、クリックして何もおきません


どこを見たのかは分かりませんが、これは役に立ちませんか?
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/TableDemo.java

それと、
引用:

/**
* 指定された位置のセルを編集可能にするかどうかの判定を行う。
* @param int 行位置。
* @param int カラム位置。
* @return 指定された位置のセルを編集可能にするかどうかの判定結果。
*/
public boolean isCellEditable(int row, int col) {
return false;
}


このメソッドがfalseを返すと、セルを編集できません。
つまり、チェックボックスをいくら押しても何も変わりません。
104
会議室デビュー日: 2004/01/21
投稿数: 17
投稿日時: 2004-02-25 09:26
104です
koeさんありがとうございました。
ご指摘のあったメソッドを直して結果
編集可能になりました。
本当にありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)