我要保存每列移动后的长度,现在迷糊啦不知道用什么事件监听啦高手帮个忙啊
pfoTable.getColumnModel().addColumnModelListener(new   TableColumnModelListener()   {   
                       public   void   columnMarginChanged(ChangeEvent   e)   {   
                          //当宽度变化时执行   
                       }   
                       public   void   columnAdded(TableColumnModelEvent   e)   {}   
                       public   void   columnRemoved(TableColumnModelEvent   e)   {   
                       public   void   columnSelectionChanged(ListSelectionEvent   e)   {}   
                       public   void   columnMoved(TableColumnModelEvent   e)   {}   
                 });  
上面的方法不行哈~~~~~ 

解决方案 »

  1.   

    columnMarginChanged
    public void columnMarginChanged(ChangeEvent e)当列由于间距的更改而被移动时调用。如果正在编辑某个单元格,则停止编辑并重新绘制该单元格。 
    应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。 
    指定者:
    接口 TableColumnModelListener 中的 columnMarginChanged
    参数:
    e - 接收到的事件
    另请参见:
    TableColumnModelListener
      

  2.   

    改变JFrame边框大小就可触发事件
    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.TableColumnModelEvent;
    import javax.swing.event.TableColumnModelListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.JTableHeader;public class Test implements TableColumnModelListener {    public static void main(String[] args) {
            new Test().go();
        }    public void go() {
            JFrame jf = new JFrame();
            JTable jt = new JTable();
            DefaultTableModel dtm = new DefaultTableModel();
            dtm.addColumn("Co1");
            dtm.addColumn("Co2");
            dtm.addRow(new Object[] { "one", "two" });
            dtm.addRow(new Object[] { "three", "four" });
            jt.getColumnModel().addColumnModelListener(this);        jt.setTableHeader(new JTableHeader());
            jt.setModel(dtm);        jf.add(jt);
            jf.setSize(400, 200);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }    public void columnAdded(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnMarginChanged(ChangeEvent e) {
            System.out.println("columnMarginChanged");
        }    public void columnMoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnRemoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnSelectionChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub
        }}
      

  3.   

    长度是getColumnMargin()吧
    改变JFrame边框大小就可触发事件
    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.TableColumnModelEvent;
    import javax.swing.event.TableColumnModelListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.JTableHeader;public class Test implements TableColumnModelListener {    public static void main(String[] args) {
            new Test().go();
        }    public void go() {
            JFrame jf = new JFrame();
            JTable jt = new JTable();
            DefaultTableModel dtm = new DefaultTableModel();
            dtm.addColumn("Co1");
            dtm.addColumn("Co2");
            dtm.addRow(new Object[] { "one", "two" });
            dtm.addRow(new Object[] { "three", "four" });
            jt.getColumnModel().addColumnModelListener(this);        jt.setTableHeader(new JTableHeader());
            jt.setModel(dtm);        jf.add(jt);
            jf.setSize(400, 200);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }    public void columnAdded(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnMarginChanged(ChangeEvent e) {
            System.out.println("columnMarginChanged");
        }    public void columnMoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnRemoved(TableColumnModelEvent e) {
            // TODO Auto-generated method stub
        }    public void columnSelectionChanged(ListSelectionEvent e) {
            // TODO Auto-generated method stub
        }}
      

  4.   

    不是啊,各位老大,我知道列的移动的确会columnMarginChanged(),可是他的参数ChangeEvent 并不能得到是移动啦那个列,那我也就没办法获取该列移动后的长度啦。。