我是 JAVA 新手,我正在尝试制作 JTable。我想要的是,每当用户从 Jtable 中的组合框进行选择时,Jtable 会将当前日期放在组合框旁边的单元格中。我写了一个代码,但代码无法更新单元格值。这是我的代码(我现在只想让 Jtable 在第 1 行第 4 列插入“a”)。
public class GChamber extends JPanel {
private boolean DEBUG = true;
ListSelectionModel listSelectionModel;
public GChamber() {
...
JTable table1 = new JTable(new Table1());
listSelectionModel = table1.getSelectionModel();
table1.setSelectionModel(listSelectionModel);
...
TableColumn TestName=table1.getColumnModel().getColumn(3);
final JComboBox comboBox= new JComboBox();
//Setup comboBox. The data of comboBox is from another Jtable.
for(int i=0;i<table2rowlength;i++)
{
comboBox.addItem(Listofdiease[i]);
}
comboBox.addActionListener(new ActionListener()
TestName.setCellEditor(new DefaultCellEditor(comboBox));
{
@Override
public void actionPerformed(ActionEvent e) {
String userinput = (String)comboBox.getSelectedItem();
Table1 temp=new Table1();
for(int i=0;i<table2rowlength;i++)
{
if (userinput.equals(Listofdiease[i])) {
temp.setValueAt("a", 1, 4);
}
}
}
});
....
}
public class Table1 extends AbstractTableModel {
String[] cName1 = {"1","2","3","4","5", "6"};
Object[][] data1 = {
{"CC040-2", new Integer(1),"", "","",""},
{"CC040-2", new Integer(2),"Rowing", "", "",""},
{"CC040-2", new Integer(3),"Knitting", "", "",""},
{"CC040-2", new Integer(4),"Speed reading", "", "",""},
{"CC040-2", new Integer(5),"Pool", "", "",""},
{"CC040-2", new Integer(6),"Pool", "", "",""},
{"CC040-2", new Integer(7),"Pool", "", "",""},
{"CC040-2", new Integer(8),"Pool", "", "",""},
{"CC040-2", new Integer(9),"Pool", "", "",""},
{"CC040-2", new Integer(10),"Pool", "", "",""},
{"CC040-2", new Integer(11),"Pool", "", "",""},
{"CC040-2", new Integer(12),"Pool", "", "",""},
{"CEA003", new Integer(13),"Pool","", "",""},
{"CEA003", new Integer(14),"Pool", "", "",""},
{"CEA003", new Integer(15),"Pool", "", "",""},
{"CEA003", new Integer(16),"Pool", "", "",""},
{"CEA004", new Integer(17),"Pool", "", "",""},
{"CEA004", new Integer(18),"Pool", "", "",""},
{"CEA004", new Integer(19),"Pool", "", "",""},
{"CEA004", new Integer(20),"Pool", "", "",""},
};
public int getColumnCount() {
return cName1.length;
}
public int getRowCount() {
return data1.length;
}
public String getColumnName(int col) {
return cName1[col];
}
public Object getValueAt(int row, int col) {
return data1[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
}
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col
+ " to " + value
+ " (an instance of "
+ value.getClass() + ")");
}
data1[row][col] = value;
fireTableCellUpdated(row, col);
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}
private void printDebugData() {
int numRows = getRowCount();
int numCols = getColumnCount();
for (int i=0; i < numRows; i++) {
System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + data1[i][j]);
}
System.out.println();
}
System.out.println("--------------------------");
}
public void addTableModelListener(TableModelListener l) {
}
}
有没有人可以告诉我为什么这段代码不起作用以及如何修复它?