JList.getModel()在强制转换为DefaultListModel的时候,提示java.lang.ClassCastException,我输出了JList.getModel()
获取的对象(ListModel model = JList.getModel()),发现model的类型是居然是javax.swing.JList而不是javax.swing.ListModel,怪不得转换时候会出现问题。可是这样一来,获取JList数据模型该怎么办?非得先定义一个DefaultListModel,然后用JList.setModel()吗?

解决方案 »

  1.   

    不可能吧!!
    应该是class javax.swing.JList$3。这个是getClass打出。直接打出的是javax.swing.JList$3@dd5b 你应该知道$符号代表什么编译信息。怎么会得出这样的结论呢?
    你没有指定一个model,jlist自然使用默认的。默认的不是DefaultListModel,而是一个继承AbstractListModel的内部类!!
    我不明白你的意图,既然你指定的时候没有指明model为何使用的时候要用DefaultListModel?如果后面你想要使用,前面还是定制一下。
      

  2.   

    我原本是想这样用的:JList初始化的时候用一个Vector初始化,然后直接getModel给定义的全局使用的DefaultListModel model赋值,这样就省去了
    用model一个个添加数据的过程,否则挺麻烦的。我只是奇怪,Java原来在模型的处理上也有不同步的地方,呵呵。