你是想在编辑的时候响应button事件还是显示的时候?你是怎样实现放入jbutton的?
你最好用重写cellrenderer或则celleditor来实现你要的功能,这样应该没问题,
我做过

解决方案 »

  1.   

    我给出代码!
     //changeButtonRender
        private class ChangeButtonRenderer extends JButton implements TableCellRenderer{
            JButton button=new JButton();
            public ChangeButtonRenderer(){
                button.setBorder(BorderFactory.createLineBorder(Color.black));
                setOpaque(true);
            }
            public Component getTableCellRendererComponent(
                    JTable t,Object value,
                    boolean isSelected,
                    boolean hasFocus,
                    int row,int col){
                button.setText(dataModel.getValueAt(row,3).toString());
                return button;
            }
        }
        //ChangeButtonEditor
     public class ChangeButtonEditor extends DefaultCellEditor {
         protected JButton button;
         private int hererow;     public ChangeButtonEditor(JCheckBox checkBox) {
             super(checkBox);
             button = new JButton();
             button.setBorder(BorderFactory.createLineBorder(Color.black));
             button.setOpaque(true);
             button.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent e) {
                     dataModel.setValueAt((Integer.parseInt(dataModel.getValueAt(hererow,3).toString()) +1)%3+"",hererow,3);
                     button.setText(dataModel.getValueAt(hererow,3).toString());
                 }
             });
         }     public Component getTableCellEditorComponent(JTable table, Object value,
                 boolean isSelected, int row, int column) {
             hererow=row;
             button.setText(dataModel.getValueAt(hererow,3).toString());
             return button;
         }     public Object getCellEditorValue() {
             return null ;
         }     public boolean stopCellEditing() {
             return super.stopCellEditing();
         }     protected void fireEditingStopped() {     }
        }
      

  2.   


         protected void fireEditingStopped() {         super.fireEditingStopped();
         }
      

  3.   

    public Object getCellEditorValue() {
             return null ;
         }
    这个方法好像也有问题,当取消编辑状态时,好像jtable是调用这个方法获取修改后的值的。