1

我有一个可访问的 JComboBox,其项目经常更改(我执行 a jComboBox.removeAllItems();,然后通过 添加新项目jComboBox.addItem(item))。

当项目发生变化,并且用户去选择一个新项目时,我收到以下 NPE:

注意在运行 JAWS 时发生

java.lang.NullPointerException
    at javax.swing.JList$AccessibleJList$AccessibleJListChild.getAccessibleSelection(JList.java:3392)
    at java.awt.Component.getAccessibleStateSet(Component.java:9624)
    at java.awt.Component$AccessibleAWTComponent.getAccessibleStateSet(Component.java:9156)
    at javax.swing.JComponent$AccessibleJComponent.getAccessibleStateSet(JComponent.java:3919)
    at javax.swing.JList$AccessibleJList$AccessibleJListChild.getAccessibleStateSet(JList.java:3301)
    at com.sun.java.accessibility.AccessBridge.getAccessibleStatesStringFromContext(AccessBridge.java:1331)
    at com.sun.java.accessibility.AccessBridge.run(Native Method)
    at java.lang.Thread.run(Thread.java:724)

我假设这是由于组合框中的项目数量发生了变化,但我不确定将更改传播到可访问上下文需要什么。

我在 JComboBox 上有以下 ActionListener

jComboBox.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String selectedItem = (String) jComboBox.getSelectedItem();
                selectedItem = selectedItem == null ? " " : selectedItem;
                jComboBox.getAccessibleContext().setAccessibleDescription(selectedItem);
            }
        });
4

0 回答 0