JTable について助けが必要です。データベースから JTable にデータを抽出するプログラムを作成しています。最初の列は編集可能な JCheckBox にする必要があるため、チェックされた (true または false) 行とデータを操作できます。
私は AbstractTableModel (with class extends AbstractTableModel) を使用しており、これらの 5 つのメソッドをオーバーライドしています。
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == 0;
}
@Override
public Class<?> getColumnClass(int col) {
if (col == 0) {
return Boolean.class;
}
return super.getColumnClass(col);
}
@Override
public int getColumnCount() {
return header.length;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int row, int col) {
return data[row][col];
}
私が使用する JTable を表示するには:
JTable table = new JTable();
JScrollPane scrollpane = new JScrollPane();
. . .
table = new JTable(data, header);
table.setModel(this);
scrollpane = new JScrollPane(table);
for ループを使用してデータをデータ配列に読み込みます。私が定義したヘッダー配列。基本的に、正しいデータを含むメールを送信するには、チェックされた行が必要です。
編集:
package test;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class TestCode extends AbstractTableModel {
private static final long serialVersionUID = -7051817393770003705L;
String[] header = {"", "header", "header", "header"};
Object[][] data = {{new Boolean(false), "Text", "Text", "Text"}, {new Boolean(false), "Text", "Text", "Text"}, {new Boolean(false), "Text", "Text", "Text"}};
public TestCode() {
JFrame frame = new JFrame();
JTable table = new JTable(data, header);
table.setModel(this);
JScrollPane scrollpane = new JScrollPane(table);
frame.add(scrollpane);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
}
@Override
public boolean isCellEditable(int row, int col) {
return col == 0;
}
@Override
public Class<?> getColumnClass(int col) {
if (col == 0) {
return Boolean.class;
}
return super.getColumnClass(col);
}
@Override
public int getColumnCount() {
return header.length;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int row, int col) {
return data[row][col];
}
public static void main(String[] args) {
TestCode code = new TestCode();
}
}
これは、簡単にするために実行する私のコードの短いスニペットです。最初の列で JCheckBoxes をチェックできるようにしたいので、その列から真または偽のブール値を読み取ることができます。
- ご協力ありがとう御座います!