import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class SetValueAtToSetValue extends JFrame{
public SetValueAtToSetValue(){
final AbstractTableModel model = new MyModel();
final JTable table = new JTable(model);
getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
model.setValueAt(new Integer(1), 0, 0);//设置第一个单元格为1
JButton button = new JButton("增加选择的单元格的值");
getContentPane().add(button,BorderLayout.SOUTH);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int row = table.getSelectedRow();
//将视图中位于 viewColumnIndex 的列索引映射到表模型中的列索引。返回模型中的对应列索引。
//如果 viewColumnIndex 小于 0,则返回 viewColumnIndex。 convert:转换
int col = table.convertColumnIndexToModel(table.getSelectedColumn());
int currentValue = ((Integer)model.getValueAt(row, col)).intValue();//当前的值转成int
model.setValueAt(new Integer(currentValue + 1), row, col);//每次加1
}
});
setSize(300,150);
}
public static void main(String[] args) {
SetValueAtToSetValue ex2 = new SetValueAtToSetValue();
ex2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex2.setVisible(true);
int[][] table = {new int[3],new int[3],new int[3]};
System.out.println("" + table[0].length);
System.out.println(new int[3].toString());
}
}
class MyModel extends AbstractTableModel{//继承一个
private int[][] table = {new int[3],new int[3],new int[3]};
//System.out.println(table);
public MyModel(){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
table[i][j] = i*j;
}
}
/*这个for循环初始值为这样,但表格显示第一列第一行的值会为1,是因为上面setValueAt方法
* 000
* 012
* 024
*/
}
public int getColumnCount() {
return table.length;
}
public int getRowCount() {
return table[0].length;
}
public Object getValueAt(int r, int c) {
return new Integer(table[r][c]);
}
public void setValueAt(Object obj,int r, int c){
table[r][c] = ((Integer)obj).intValue();
fireTableCellUpdated(r,c);//通知表结构 单元格被更改
}
}