java的swing编程,Jtable的单元格如何赋值

2024-12-16 18:03:41
推荐回答(2个)
回答1:

不能对JTable直接进行增删改,要先获取JTable的model然后修改model再将修改后的model赋给JTable

String[] data = new String[8];//用于操作表内数据行的data数组,元素个数要与table的列的数量相一致
int numT;//表格已有数据的行数
JTable jTable=new JTable();
DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
numT = model.getRowCount();//获取当前已有行数
while (numT > 0) {//如果是全体刷新表格需要移除之前的所有数据行
model.removeRow(0);
numT--;
}
sql= "select name,number,area,price,room,acreage,fishing,mating from message";
try{
rs=stmt.executeQuery(sql);
while (rs.next()) {
data[0] = rs.getString(1).trim();
data[1] = rs.getString(2).trim();
data[2] = rs.getString(3).trim();
data[3] = rs.getString(4).trim();
data[4] = rs.getString(5).trim();
data[5] = rs.getString(6).trim();
data[6] = rs.getString(7).trim();
data[7] = rs.getString(8).trim();
model.addRow(data);
}
}catch(SQLException e){
System.err.print("Error" + e.getMessage());
}
jTable.setModel(model);//将修改后的model传回给JTable

至于JButton那些触发在事件侦听里,根据
jTable.getSelectedRow();获取已选行号
jTable.getSelectedColumn();获取已选列号
改行就光获取行号就可以了,然后读取模板,删掉该行再传回给JTable即可
在JTable创建时可以选择设置是否允许多选,不多选上面的方法已经够了
还有什么百度hi吧,这里不多说了,省的又要审核了

回答2:

有两个方法。
1、自定义渲染器,自己添加。(或是用JDK已有的渲染器也可以)
2、重写TableModel的getColumnClass
参考实例如下:

public class Test {
public static void main(String[] args) {
String[][] cells = new String[6][7];
String add = "1";//已经存在的变量
int addValue = Integer.parseInt(add);//需要定义的中间变量
for (int rowIndex = 0; rowIndex <= 5; rowIndex++) {
for (int columnIndex = 0; columnIndex <= 6; columnIndex++) {
cells[rowIndex][columnIndex] = String.valueOf(addValue++) ;//赋值过程
System.out.print(cells[rowIndex][columnIndex]+",");
}
System.out.println("");
}
}
}