Вот определение того, что утверждение, и здесь некоторый пример кода. Вкратце утверждение является способом для разработчика протестировать его (или ее) предположения о состоянии кода в любой данной точке. Например, если Вы делали следующий код:
mypointer->myfunct();
Вы, вероятно, хотите утверждать, что mypointer не является ПУСТЫМ, потому что это - Ваше предположение - что mypointer никогда не будет ПУСТЫМ перед вызовом.
Я нашел способ сделать флажок с тремя состояниями, просто добавив слушателя:
public class TriStateActionListener implements ActionListener{
final protected Icon icon;
public TriStateActionListener(Icon icon){
this.icon=icon;
}
public static Boolean getState(javax.swing.JCheckBox cb){
if (cb.getIcon()==null) return null;
if (cb.isSelected()) return true;
else return false;
}
public void actionPerformed(ActionEvent e) {
javax.swing.JCheckBox cb=(javax.swing.JCheckBox)e.getSource();
if (!cb.isSelected()){
cb.setIcon(icon);
}
else if (cb.getIcon()!=null){
cb.setIcon(null);
cb.setSelected(false);
}
}
}
Затем в коде приложения это всего лишь одна строка:
jCheckBox1.addActionListener(new TriStateActionListener(getResourceMap().getIcon("TriStateIcon")));
После всех отзывов, Я думаю, что раскрывающийся список может быть лучшим выбором. Но я хотел поделиться своим кодом со всеми остальными.
Эти "уродливые реализации" - старая ссылка. Одно из предложений на этой странице было обновлено пару лет назад. Я не тестировал старую реализацию, поэтому не знаю, лучше или хуже новая.
Я бы просто использовал тот, который вы опубликовали.
Пока ваша сложность находится в другом классе (который работает) и действует так же, как любой другой элемент управления, кого это волнует? (Похоже, что это предположение, лежащее в основе всех свингов, большинство классов свинга, кажется, об этом сложны.)
Измените пользовательский интерфейс. Флажок с тремя состояниями необычен и действительно может сбить с толку пользователей. Выпадающий список - хороший вариант, но более одного случая в диалоговом окне он также может ввести пользователя в заблуждение.
Флажки с тремя состояниями - это стандартная идиома пользовательского интерфейса для Treeviews с частично отмеченными дочерними узлами. Они широко используются при управлении слоями в сложных иерархических представлениях, таких как Google Earth.