public void jinit(){ JFrame jf = new JFrame(); JPanel jp = new JPanel(); MyTable mt = new MyTable(); JTable table = new JTable(mt); JScrollPane sp = new JScrollPane(table); jp.add(sp); jf.add(jp); jf.setSize(450,200); jf.setLocation(200,100); jf.setVisible(true); } public void tableChanged(TableModelEvent e) { int row = e.getFirstRow(); int column = e.getColumn(); System.out.println("fgsdas"); //table.repaint(); } }class MyTable extends AbstractTableModel { Object[][] p = { { "阿呆", "Taipei", new Integer(66), new Integer(32), new Integer(98)}, { "阿瓜", "ChiaYi", new Integer(85), new Integer(69), new Integer(154)} }; String[] n = { "姓名", "居住地", "语文", "数学", "总分" }; public int getColumnCount() { return n.length; } public int getRowCount() { return p.length; } public String getColumnName(int col) { return n[col]; } public Object getValueAt(int row, int col) { return p[row][col]; } public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } public void setValueAt(Object value, int row, int col) { p[row][col] = value; fireTableCellUpdated(row, col); } public void mySetValueAt(Object value, int row, int col) { p[row][col] = value; } }
重新setTablecell 再给你的tableCell加个事件监听enter,在enter的actionperformed里调用stopCellEditing()将值写入就行 public boolean stopCellEditing() { JTable aTable = this.editingTable; int rowNo = aTable.getEditingRow(); String flag = ""; if (rowNo != -1) { flag = (String) aTable.getValueAt(rowNo, 0); } if (flag.indexOf("电压等级") > -1) { this.delegate.setValue(levelBox.getSelectedItem()); } }
import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;public class TestTable1 {
public static void main(String[] args){
new TestTable1().jinit();
}
public void jinit(){
JFrame jf = new JFrame();
JPanel jp = new JPanel();
MyTable mt = new MyTable();
JTable table = new JTable(mt);
JScrollPane sp = new JScrollPane(table);
jp.add(sp);
jf.add(jp);
jf.setSize(450,200);
jf.setLocation(200,100);
jf.setVisible(true);
}
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
System.out.println("fgsdas");
//table.repaint();
}
}class MyTable extends AbstractTableModel { Object[][] p = {
{ "阿呆", "Taipei", new Integer(66), new Integer(32),
new Integer(98)},
{ "阿瓜", "ChiaYi", new Integer(85), new Integer(69),
new Integer(154)} }; String[] n = { "姓名", "居住地", "语文", "数学", "总分" }; public int getColumnCount() {
return n.length;
} public int getRowCount() {
return p.length;
} public String getColumnName(int col) {
return n[col];
} public Object getValueAt(int row, int col) {
return p[row][col];
} public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
} public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
} public void setValueAt(Object value, int row, int col) {
p[row][col] = value;
fireTableCellUpdated(row, col);
} public void mySetValueAt(Object value, int row, int col) {
p[row][col] = value;
}
}
重新setTablecell
再给你的tableCell加个事件监听enter,在enter的actionperformed里调用stopCellEditing()将值写入就行
public boolean stopCellEditing()
{
JTable aTable = this.editingTable;
int rowNo = aTable.getEditingRow();
String flag = "";
if (rowNo != -1)
{
flag = (String) aTable.getValueAt(rowNo, 0);
} if (flag.indexOf("电压等级") > -1)
{
this.delegate.setValue(levelBox.getSelectedItem());
}
}