JTable设置指定行列cell的值 JTable,数据模型用的是实现AbstractTableModel抽象类。现在JTable已经从数据库中取出值并且已经能够正确显示,现在有需求要更改某一列的值为指定的字符串,就像数据库中存储男女为0、1,想在jtable中把0、1改成男、女。有人说用jtable的setvalueat方法,可是set后没有任何反应,又有人说要重写此方法可惜不会啊,求指教~jtable 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用 TableCellRenderer ? 改完之后运行下面代码试试SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // TODO Auto-generated method stub table.updateUI(); } }); 附一简单tableModel的实现,希望对你有帮助public class SimpleTableModel extends AbstractTableModel { private String[] columns;// 表头数组 private List valueObjs = new ArrayList();// 表格值列表,为Object[]对象 private boolean cellEditabled = false;// 列是否可以修改 private boolean Editabled = false;// 哪些列可以修改 public SimpleTableModel(String[] columns, List valueObjs) { this.columns = columns; this.valueObjs = valueObjs; } /** * 获取总行数 * * @return 总行数 */ public int getRowCount() { return getValueObjs().size(); } /** * 获取总列数 * * @return 总列数 */ public int getColumnCount() { return columns.length; } /** * 得到指定列的列名 * * @param column * 指定列 * @return 指定列的列名 */ public String getColumnName(int column) { return columns[column]; } /** * 指定单元格是否可以编辑 * * @param row * 行序号 * @param col * 列序号 * @return true or false */ public boolean isCellEditable(int r, int c) {// if (Editabled) {// return (c == 0) || (c == 2);// } return false; } public void setCellEdit(boolean b) { Editabled = b; } /** * 设置单元格是否可以编辑 * * @param b * true or false */ public void setCellEditable(boolean b) { cellEditabled = b; } /** * 获得指定单元格的值 * * @param row * 行序号 * @param col * 列序号 * @return 指定单元格的值 * */ public Class getColumnClass(int c) { if(c == MainFramePanel._state){ return MyCellRender.class; } return super.getClass(); } public Object getValueAt(int row, int col) { if (getValueObjs().size() <= row) { return null; } return ((Object[]) getValueObjs().get(row))[col]; } /** * 设置指定单元格的值 * * @param row * 行序号 * @param col * 列序号 */ public void setValueAt(Object value, int row, int col) { if (getValueObjs().size() <= row) { return; } ((Object[]) getValueObjs().get(row))[col] = value; fireTableCellUpdated(row, col); } /** * 获得指定值的行序号 * * @parma value 指定值 * @return 行序号 */ public int findRow(Object value) { for (int i = 0; i < valueObjs.size(); i++) { if (((Object[]) valueObjs.get(i))[0].equals(((Object[]) value)[0])) { return i; } } return -1; // return getValueObjs().indexOf(value); } /** * 在最后增加一行 * * @parma value 指定值 */ public void appendRow(Object value) { getValueObjs().add(value); fireTableDataChanged(); } /** * 删除指定行 * * @param row * 行序号 */ public void removeRow(int row) { getValueObjs().remove(row); fireTableDataChanged(); } /** * 清空整个表格 */ public void clean() { valueObjs = new ArrayList(); fireTableDataChanged(); } /** * 取出所有数据 */ public List getValueObjs() { return valueObjs; } /** * 重新加载表格数据 * * @param values * 新的数据 */ public void reloadTable(List values) { valueObjs.removeAll(valueObjs); valueObjs.addAll(values); fireTableDataChanged(); }} temp[j] = a[i];出现java.lang.ArrayIndexOutOfBoundsException: 用readline()读入文本文件中一行,立即处理一行的问题 想从事j2ee开发,该学些什么? 怎樣不通過odbc直接用 純jdbc輿sql server相連 关于MAIN 关于调用word的问题 在CORBA中,如何处理多个请求 请问APPLET中如何能弹出新的网页窗口? .class 文件在起动时出现黑屏?? String类有数据成员吗 【输入求助帖】我写了一个关于根据读入参数不同判断的程序 一个正则表达式的小问题
SwingUtilities.invokeLater(new Runnable() { @Override
public void run() {
// TODO Auto-generated method stub
table.updateUI();
}
});
private boolean Editabled = false;// 哪些列可以修改 public SimpleTableModel(String[] columns, List valueObjs) {
this.columns = columns;
this.valueObjs = valueObjs;
} /**
* 获取总行数
*
* @return 总行数
*/
public int getRowCount() {
return getValueObjs().size();
} /**
* 获取总列数
*
* @return 总列数
*/
public int getColumnCount() {
return columns.length;
} /**
* 得到指定列的列名
*
* @param column
* 指定列
* @return 指定列的列名
*/
public String getColumnName(int column) {
return columns[column];
} /**
* 指定单元格是否可以编辑
*
* @param row
* 行序号
* @param col
* 列序号
* @return true or false
*/
public boolean isCellEditable(int r, int c) {
// if (Editabled) {
// return (c == 0) || (c == 2);
// }
return false;
} public void setCellEdit(boolean b) {
Editabled = b;
} /**
* 设置单元格是否可以编辑
*
* @param b
* true or false
*/
public void setCellEditable(boolean b) {
cellEditabled = b;
} /**
* 获得指定单元格的值
*
* @param row
* 行序号
* @param col
* 列序号
* @return 指定单元格的值
*
*/
public Class getColumnClass(int c) {
if(c == MainFramePanel._state){
return MyCellRender.class;
}
return super.getClass();
} public Object getValueAt(int row, int col) {
if (getValueObjs().size() <= row) {
return null;
}
return ((Object[]) getValueObjs().get(row))[col];
} /**
* 设置指定单元格的值
*
* @param row
* 行序号
* @param col
* 列序号
*/
public void setValueAt(Object value, int row, int col) {
if (getValueObjs().size() <= row) {
return;
}
((Object[]) getValueObjs().get(row))[col] = value;
fireTableCellUpdated(row, col);
} /**
* 获得指定值的行序号
*
* @parma value 指定值
* @return 行序号
*/
public int findRow(Object value) {
for (int i = 0; i < valueObjs.size(); i++) {
if (((Object[]) valueObjs.get(i))[0].equals(((Object[]) value)[0])) {
return i;
}
}
return -1;
// return getValueObjs().indexOf(value);
} /**
* 在最后增加一行
*
* @parma value 指定值
*/
public void appendRow(Object value) {
getValueObjs().add(value);
fireTableDataChanged();
} /**
* 删除指定行
*
* @param row
* 行序号
*/
public void removeRow(int row) {
getValueObjs().remove(row);
fireTableDataChanged();
} /**
* 清空整个表格
*/
public void clean() {
valueObjs = new ArrayList();
fireTableDataChanged();
} /**
* 取出所有数据
*/
public List getValueObjs() {
return valueObjs;
} /**
* 重新加载表格数据
*
* @param values
* 新的数据
*/
public void reloadTable(List values) {
valueObjs.removeAll(valueObjs);
valueObjs.addAll(values);
fireTableDataChanged();
}
}