Java Swing JAWS可访问的JComboBox在项目更改时抛出NPE

时间:2014-05-20 13:02:32

标签: java swing accessibility jaws-screen-reader

我有一个可访问的JComboBox,其项目经常更改(我执行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);
            }
        });

0 个答案:

没有答案