我们正尝试对使用JCombobox
所做的选择进行验证。如果新选择未通过此验证,我们将尝试恢复到之前的选择。
关于如何做到这一点的任何想法?
我已经创建了ItemListener
接口的实现。通过检查DESELECTED
事件捕获前一个值,并在SELECTED
事件后验证当前选择。但我不确定在需要时我将在哪里重置为之前的值。
答案 0 :(得分:1)
我可以从听众那里做到吗?
是的,你可以。例如:
JComboBox comboBox = new JComboBox();
comboBox.addItemListener(new ItemListener() {
Object previousSelection = null;
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.DESELECTED) {
previousSelection = e.getItem();
} else if(!isValid(e.getItem())) {
JComboBox cb = (JComboBox)e.getSource();
cb.setSelectedItem(previousSelection);
}
}
});
isValid(Object obj)
方法应该验证所选项目。
这是否会导致对我的监听器的递归调用?
当然,但之前选择的项目是有效的,所以它将被调用2次: