问题描述
- Jtable的问题,大神求指教
-
最近运用JPanel做一个数据库查询表单,在做翻页功能的时候出现了一个问题 。翻页是可以做到,但是当我点击表头或者在点击翻页后的任意一行 时 表单会变成第一页的数据值。
就比如:第一页是:表头1 表头2
1 value1
2 value2
翻页后: 表头1 表头2
3 value3
4 value4
我翻页后 点击“表头1”或“表头2”时 数据又变成第一页的值了
点击“3”或者“value3”时数据变成相应的“1”和“value1”
求大神指点 不知道怎么解决 源码很长 我截取一部分代码 希望大家能帮我看看问题出在哪里
public void selectDownPage(String key) {
if (key != null) {
List list = CountryOperate.downPage(key);
if (list != null) {
tm = new TableModel();
Object[][] datavalues = new Object[list.size()][8];
for (int i = 0; i < list.size(); i++) {
Country co = list.get(i);
// int m = CountryOperate.x-
datavalues[i][0] = co.getNumber();
datavalues[i][1] = co.getName();
datavalues[i][2] = co.getGuige();
datavalues[i][3] = co.getKuwei();
datavalues[i][4] = co.getKucun();
datavalues[i][5] = co.getDanwei();
datavalues[i][6] = co.getJinjia();
datavalues[i][7] = co.getCaigoudanwei();
// table.getModel().setValueAt(co.getNumber(), i, 0);
// table.getModel().setValueAt(co.getName(), i, 1);
// table.getModel().setValueAt(co.getGuige(), i, 2);
// table.getModel().setValueAt(co.getKuwei(), i, 3);
// table.getModel().setValueAt(co.getKucun(), i, 4);
// table.getModel().setValueAt(co.getDanwei(), i, 5);
// table.getModel().setValueAt(co.getJinjia(), i, 6);
// table.getModel().setValueAt(co.getCaigoudanwei(), i, 7);
//}
// this.setValues(datavalues);
// table.updateUI();
this.setValues(datavalues);
table = new JTable(tm) {
public boolean isCellEditable(int row, int column) {
return false;
}
};
table.updateUI();
table.repaint();
Debug.P(table.getModel().getValueAt(0, 0));
JScrollPane jsp = new JScrollPane(table);
jsp.setBounds(0, 125, 1000, 300);
jContentPane.add(jsp);
} else {
JOptionPane.showMessageDialog(jFrame, "已经是最后一页");
}
}
}
public void setValues(Object[][] obj) {
this.tm.setDatavalues(obj);
}public class TableModel extends AbstractTableModel {
// public final static String[] columnHeaders = { // "国家名称","所属地区","国家面积","人口数量","国家GDP" // }; public TableModel() { super(); } public TableModel(String[] headName, Object[][] obj) { this(); this.columnHeaders = headName; this.datavalues = obj; } public static String[] columnHeaders = { "品号", "品名", "规格", "库位号", "库存数量", "最近进价", "库存单位", "采购单位" }; private Object[][] datavalues ; public int getColumnCount() { return datavalues[0].length; } public int getRowCount() { return datavalues.length; } public Object getValueAt(int rowIndex, int columnIndex) { return datavalues[rowIndex][columnIndex]; } public String getColumnName(int column) { return columnHeaders[column]; } public void setDatavalues(Object[][] datavalues) { this.datavalues = datavalues; } public void setValueAt(Object value, int row, int col) { datavalues[row][col] = value; fireTableCellUpdated(row, col); }
}