出错语句在MyTableRender中
DraggableLabel label = new DraggableLabel((String)value,image,SwingConstants.LEFT);
也就是声成可拖放对象是出错。重新编译也还是这个错,我觉得很奇怪。原理有错误吗?

解决方案 »

  1.   

    它不是指出没有某某方法吗?通常这个错误是编译时和运行时版本不一样造成的,编译通过了但运行的时候不是用编译时的同一个类.
    把你完整的java.lang.NoSuchMethodError的打印错误贴出来看看,应该有提示是哪个方法没有.
      

  2.   

    我把已经生成的class全部都删除后再编译,还是那个错。这是相关的错误信息:
    java.lang.NoSuchMethodError
            at MyTableRender.getTableCellRendererComponent(MyProject.java:511)
            at javax.swing.JTable.prepareRenderer(JTable.java:3540)
            at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:995)
            at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:917)
      

  3.   

    上面的问题已经解决了,可是还是不能实现拖放,请问这种比较复杂的拖放是这么实现的吗?
    在Jtable内部的JLabel的拖放应该怎么实现?
      

  4.   

    对JLable实现拖放应该可以考虑这样实现.
    拖放操作需要考虑2个鼠标事件:鼠标按下和鼠标松开
    给JLable添加这2个鼠标事件监听,并判断鼠标按下与鼠标松开时,
    鼠标的位置是否相同(是否有位移)如果位移的距离大到能够引起拖放操作,
    移动JTable中lable的位置(原来位置的lable删除,在新位置加入那个拖放的lable).