import java.awt.Dimension;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;public class JiBaoBu  implements TableModelListener{
/*
 * 创建几个组件
 */
private static JFrame jf;
private static JTable jt;
private static JScrollPane jsp;
private static JPanel jp,jp1;

MyTable mt=null;
/*
 *界面设计 
 */
private void Interface_JB(){

mt=new MyTable();
mt.addTableModelListener(this);
jf=new JFrame();
jt=new JTable(mt.ob,mt.Names);
jsp=new JScrollPane(jt);
jp=new JPanel();
jt.setPreferredScrollableViewportSize(new Dimension(300,200));

jf.setContentPane(jp);
jf.setSize(600,480);

/*ImageIcon image =new ImageIcon("Image1//ji.jpg");
JLabel jl1=new JLabel();
jl1.setIcon(image);
jp1=new JPanel();
jp1.add(jl1);*/

jp.add(jsp,"Center");
//jp.add(jp1,"East");
//Database_test dt=new Database_test();
//Database_test.InterfaceLocation(jf);

jf.setTitle("记保部");
jf.pack();
jf.setVisible(true);
}
/*
 * 相应的事件处理(非 Javadoc)
 * @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent)
 */
public void tableChanged(TableModelEvent e) {
System.out.println("kdfjls");
int row=e.getFirstRow();
int a1=((Integer) (mt.getValueAt(row,2))).intValue();
String str1=((String) (mt.getValueAt(row,2)));
int a2=((Integer) (mt.getValueAt(row,2))).intValue();
int a3=((Integer) (mt.getValueAt(row,2))).intValue();
System.out.println("输出了!");
System.out.println(a1+" "+a2+" "+a3);
}

public static void main(String[] args){
JiBaoBu me=new JiBaoBu();
me.Interface_JB();
System.out.println("zenmle a ?");
}
/*public JiBaoBu(){

}*/
}/*
 * 定义一个MyTable类
 */
class MyTable extends AbstractTableModel{

String[] Names={"学号","姓名","周次","次数"};
Object[][] ob=new Object[100][4];
public int getColumnCount() {
return Names.length;
}                                                           public int getRowCount() {
return ob.length ;
} public Object getValueAt(int row, int col) {
return ob[row][col];
}

public String getColumnName(int col){
return Names[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){
ob[row][col]=value;
fireTableCellUpdated(row,col);
}

public void mySetValueAt(Object value,int row,int col){
ob[row][col]=value;
}
}运行此程序,事件没有响应。连在此方法中tableChanged(TableModelEvent e)
用System.out.println("");输出文子都不行,
请哪位高手指点一下,谢谢!

解决方案 »

  1.   

    import java.awt.Dimension; 
    import javax.swing.*; 
    import javax.swing.event.TableModelEvent; 
    import javax.swing.event.TableModelListener; 
    import javax.swing.table.AbstractTableModel; public class JiBaoBu  implements TableModelListener{ 
    /* 
    * 创建几个组件 
    */ 
    private static JFrame jf; 
    private static JTable jt; 
    private static JScrollPane jsp; 
    private static JPanel jp,jp1; MyTable mt=null; 
    /* 
    *界面设计 
    */ 
    private void Interface_JB(){ mt=new MyTable(); 
    mt.addTableModelListener(this); 
    jf=new JFrame(); 
    jt=new JTable(mt.ob,mt.Names); 
    jsp=new JScrollPane(jt); 
    jp=new JPanel(); 
    jt.setPreferredScrollableViewportSize(new Dimension(300,200)); jf.setContentPane(jp); 
    jf.setSize(600,480); /*ImageIcon image =new ImageIcon("Image1//ji.jpg"); 
    JLabel jl1=new JLabel(); 
    jl1.setIcon(image); 
    jp1=new JPanel(); 
    jp1.add(jl1);*/ jp.add(jsp,"Center"); 
    //jp.add(jp1,"East"); 
    //Database_test dt=new Database_test(); 
    //Database_test.InterfaceLocation(jf); jf.setTitle("记保部"); 
    jf.pack(); 
    jf.setVisible(true); 

    /* 
    * 相应的事件处理(非 Javadoc) 
    * @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent) 
    */ 
    public void tableChanged(TableModelEvent e) { 
    System.out.println("kdfjls"); 
    int row=e.getFirstRow(); 
    int a1=((Integer) (mt.getValueAt(row,2))).intValue(); 
    String str1=((String) (mt.getValueAt(row,2))); 
    int a2=((Integer) (mt.getValueAt(row,2))).intValue(); 
    int a3=((Integer) (mt.getValueAt(row,2))).intValue(); 
    System.out.println("输出了!"); 
    System.out.println(a1+" "+a2+" "+a3); 
    } public static void main(String[] args){ 
    JiBaoBu me=new JiBaoBu(); 
    me.Interface_JB(); 
    System.out.println("zenmle a ?"); 

    /*public JiBaoBu(){ }*/ 
    } /* 
    * 定义一个MyTable类 
    */ 
    class MyTable extends AbstractTableModel{ String[] Names={"学号","姓名","周次","次数"}; 
    Object[][] ob=new Object[100][4]; 
    public int getColumnCount() { 
    return Names.length; 
    }                                                          public int getRowCount() { 
    return ob.length ; 
    } public Object getValueAt(int row, int col) { 
    return ob[row][col]; 
    } public String getColumnName(int col){ 
    return Names[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){ 
    ob[row][col]=value; 
    fireTableCellUpdated(row,col); 
    } public void mySetValueAt(Object value,int row,int col){ 
    ob[row][col]=value; 


      

  2.   

    tableChanged()是在单元格有改变的时候才会触发的事件,你单元格的数据没有改变,肯定不会响应.