代码之家  ›  专栏  ›  技术社区  ›  SamHoque

第二次调用setListData后,JList setSelected不再工作

  •  0
  • SamHoque  · 技术社区  · 7 年前

    好吧,首先我有 JList 作为一个全局变量,因为我用两种不同的方法调用它。

    jList.setListData(arrays);
    jList.setSelectedIndex(0);
    

    因此,这是我在创建jList as之后在jList中调用的第一件事

    JList<String> jList = new JList<>();
    

    chooseBtn.addActionListener(e -> chooseButtonClicked());
    

    问题是:

    private void chooseButtonClicked() {
        jList.setListData(newData);
        jList.setSelectedIndex(0);
    }
    

    列表框 已更新即使在我调用时也不再选择索引 setSelectedIndex

    1 回复  |  直到 7 年前
        1
  •  0
  •   SamHoque    7 年前

    看起来像 setSelectedIndex addListSelectionListener 在上返回空值 e.getSource().getSelectedValue();

    if (source instanceof JList) {
        JList < String > jList = (JList) e.getSource();
        if (jList != null) {
            String selectedValue = jList.getSelectedValue();
            if (selectedValue != null) {
                selectedIndex = selectedValue;
            } else {
                System.out.println("Failed to get Selected Value. Cause: NullPointerException");
            }
        } else {
            System.out.println("Failed to get JList. Cause: NullPointerException");
        }
    }
    

    它打印出来了 Failed to get Selected Value. Cause: NullPointerException 一次,然后正确选择索引,没有任何问题。