我有一个可访问的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);
}
});