Jtableは初めて触るので、参考程度にしてください。
public class JtableTest extends JFrame {
private String[] columnNames = { "番号", "値", "平方根" };
private String[][] data = { { "1", "", "" }, { "2", "", "" },
{ "3", "", "" }, { "4", "", "" }, { "5", "", "" }, { "6", "", "" },
{ "7", "", "" }, { "8", "", "" }, { "9", "", "" }, { "10", "", "" } };
JtableTest() {
setBounds(10, 10, 500, 300);
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public String getColumnName(int arg0) {
return columnNames[arg0];
}
public void setValueAt(Object value, int row, int col) {
String input = (String) value;
double sqrt = Math.sqrt(Integer.parseInt(input));
data[row][col] = input;
data[row][col + 1] = Double.toString(sqrt);
}
public boolean isCellEditable(int arg0, int arg1) {
return arg1 == 1;
}
};
JTable table = new JTable(dataModel);
table.setRowSelectionAllowed(false);
JScrollPane scrollpane = new JScrollPane(table);
getContentPane().add(scrollpane, BorderLayout.CENTER);
}
public static void main(String[] args) {
JtableTest test = new JtableTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
}
入力チェックなどは何もしていませんので注意してください。
お礼
回答ありがとうございます。 AbstractTableModeを使うんですね~。 自分はずっと明後日の方向にやってたようです。 参考になります。ありがとうございました。