JList中如何编程实现选中JList中的项目(效果要跟鼠标选中一样)并获得选中项目的对象?
我先前用了setSelectedIndex(i),然后用getSelectedValues()总是出java.lang.NullPointerException错误
请教各位大侠了!

解决方案 »

  1.   

    JList中选出被选中的item我一般是用数组构造这个jlist,然后调用getSelectedIndex()得到数组下标,然后去数组里取那个值
      

  2.   

    重寫對象的toString的方法·   然後getSelectedItem
      

  3.   

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JScrollPane;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;public class SelectingJListSample {
      public static void main(String args[]) {
        String labels[] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" };
        JFrame frame = new JFrame("Selecting JList");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = frame.getContentPane();    JList jlist = new JList(labels);
        JScrollPane scrollPane1 = new JScrollPane(jlist);
        contentPane.add(scrollPane1, BorderLayout.WEST);    ListSelectionListener listSelectionListener = new ListSelectionListener() {
          public void valueChanged(ListSelectionEvent listSelectionEvent) {
            System.out.print("First index: " + listSelectionEvent.getFirstIndex());
            System.out.print(", Last index: " + listSelectionEvent.getLastIndex());
            boolean adjust = listSelectionEvent.getValueIsAdjusting();
            System.out.println(", Adjusting? " + adjust);
            if (!adjust) {
              JList list = (JList) listSelectionEvent.getSource();
              int selections[] = list.getSelectedIndices();
              Object selectionValues[] = list.getSelectedValues();
              for (int i = 0, n = selections.length; i < n; i++) {
                if (i == 0) {
                  System.out.print("  Selections: ");
                }
                System.out.print(selections[i] + "/" + selectionValues[i] + " ");
              }
              System.out.println();
            }
          }
        };
        jlist.addListSelectionListener(listSelectionListener);    MouseListener mouseListener = new MouseAdapter() {
          public void mouseClicked(MouseEvent mouseEvent) {
            JList theList = (JList) mouseEvent.getSource();
            if (mouseEvent.getClickCount() == 2) {
              int index = theList.locationToIndex(mouseEvent.getPoint());
              if (index >= 0) {
                Object o = theList.getModel().getElementAt(index);
                System.out.println("Double-clicked on: " + o.toString());
              }
            }
          }
        };
        jlist.addMouseListener(mouseListener);    frame.setSize(350, 200);
        frame.setVisible(true);
      }
    }
      

  4.   

    楼主可以这样:直接把对象添加到JList中,自己重新构造一个ListRender去显示,这样使用getSelectedItem()就是你想要的结果了