list.addListSelectionListener(new ListSelectionListener()

     public void valueChanged(ListSelectionEvent ee)
    {
       ~~~~~~~~~~~~~~~
     }
});
就是有个问题,你点一下JList中的项目,就执行两次~~~~~~~~~~处的代码!!!
不解啊!!1

解决方案 »

  1.   

    getSelectedIndex返回选择对象的索引;
    getSelectedValue返回选择的值
      

  2.   

    执行两次的问题使用getValueIsAdjusting来判断,因为选中时和选中结束会调用两次
      

  3.   


    list.addListSelectionListener(this);        public void valueChanged(ListSelectionEvent e) {
              JList theList = (JList)e.getSource();
              int index = theList.getSelectedIndex();     //得到用户选择的选项
    }
      

  4.   

    还有一个办法给程序注册一个MouseListener,
    public void mouseClicked(MouseEvent e)
        {
         if(e.getSource() == list)
         {
              int index = list.getSelectedIndex();         
             }
      }
      

  5.   

    还有个问题 JList   组件  应该支持下拉列表吧?
    我弄了一个JList 当JList的高度不能全部显示所有行时 并没有下拉列表的出现 为什么?
    Vector vectorJlist = new Vector();
    vectorJlist.addElements("1");
    vectorJlist.addElements("2");
          .
          .
          .
    vectorJlist.addElements("12");JList jlist1 = new JList(vectorJlist);    
    // 当jlist1的高度不能全部显示所有行  怎样弄出下拉列表啊?
      

  6.   

    list.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent liste) {
                    if(!liste.getValueIsAdjusting()) {
                        jButtons[0].setEnabled(true);
                        imageLabel.setIcon(mapImage[list.getSelectedIndex()]);
                        imageLabel.repaint();
                    }
                }
            });监听器中要加入判断,这样就可以在选择时只执行一次。
    当前点中的序号: list.getSelectedIndex()
    当前点中的对象: list.getSelectedValue() 
    如果想要在列表长度超过list长度出现下拉的话:JScrollPane scrollPane = new JScrollPane(list);
      

  7.   

    JScrollPane 支不支持JList啊? 
    我用的时JScrollPane 的add 添加的JList组件 不是用的构造函数
      结果跟本就没有显示JList
      

  8.   

    package untitled3;import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.*;
    import java.util.*;public class Applet1 extends Applet {
      private boolean isStandalone = false;
      GridBagLayout gridBagLayout1 = new GridBagLayout();
      JScrollPane jScrollPane1 = new JScrollPane();
      JList jList1 ;  //Get a parameter value
      public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
          (getParameter(key) != null ? getParameter(key) : def);
      }  //Construct the applet
      public Applet1() {
      }
      //Initialize the applet
      public void init() {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception {
         Vector vector =new Vector();
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
         vector.addElement("dskfa");
        jList1 = new JList(vector);
        this.setLayout(gridBagLayout1);
        this.add(jScrollPane1,        new GridBagConstraints(2, 0, 1, 4, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -211, 48));
        jScrollPane1.getViewport().add(jList1, null);  }
      //Get Applet information
      public String getAppletInfo() {
        return "Applet Information";
      }
      //Get parameter info
      public String[][] getParameterInfo() {
        return null;
      }
    }TNND的 运行后一个屁也没显示   
    以上的程序用的是JScrollPane 
      

  9.   

    为什么用JScrollPane 也就是按上面的代码不能显示jlist而改用JPane 可以显示jlist但jlist没有滚动条
      

  10.   

    我觉得可能是这两不好
        this.setLayout(gridBagLayout1);
        this.add(jScrollPane1,        new GridBagConstraints(2, 0, 1, 4, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), -211, 48)) 改用箱式布局管理器,把滚动面板加到中央,试试看。