ListSelectionListener listener=new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
Object[] objectArrayTemp=jList.getSelectedValues(); //jTextArea.setText("");   //???????????????

                          for(int i = 0; i < objectArrayTemp.length; i++)
jTextArea.append(objectArrayTemp[i]+"\n"); 

};在javax.swing.JTextArea中, 如果注释掉jTextArea.setText("");,那么在响应jList.addListSelectionListener(listener);的时候执行两次 jTextArea.append(objectArrayTemp[i]+"\n"); ,不知道这是为什么?再解释说明一下,也就是在Object[] objectArrayTemp=jList.getSelectedValues(); 假设jList.getSelectedValues();返回的数组为 
Object[] objectArrayTemp=new Object[]{"Car"}; 那么在 jTextArea(文本框)中出现了
结果:
Car
Car不知道为什么在没有jTextArea.setText("");的时候会执行两次jTextArea.append(objectArrayTemp[i]+"\n"); ?
请回答一下,谢谢....

解决方案 »

  1.   

    打印objectArrayTemp.length值看一下。
      

  2.   

    用:system.out.println(objectArrayTemp.length)确实出现了如下结果:
    1
    1
    但这是为什么呢?明明执行一次啊?
    请解决下,谢谢...
      

  3.   

    你理解错了,ListSelectionListener里面的valueChanged()每次JList选择值发生更改时都会调用两次!!!由于你之前用jTextArea.setText("");这个会把第一次调用valueChaged()方法时在textarea上写的文字清空了,所以看起来好像就只执行一次!!!