2016-05-31 2 views
-1

При использовании таких приложений, как Eclipse, или Word, я иногда вижу JCheckBox, что не является ни выбранной, ни deselected- имеет вид значок «минус»: An example of this box in Microsoft WordТретий вариант на JCheckBox?

Что это значит? Есть ли для этого цель, и если да, то как мне это достичь на Java?

+0

Возможно, что-то, чего вы не можете достичь с помощью Swing. Я бы посмотрел на «Javafx». –

+0

Я не получил полностью ваш вопрос. Но если вы хотите выбрать/отменить выбор некоторых значений поля со списком, вы всегда можете использовать combobox.setselected (index) –

+0

Я извиняюсь. Я имел в виду JCheckBox, а не JComboBox. : P – RobotKarel314

ответ

0

Обычно этот вид флажка используется в виде дерева (флажок, который содержит поднабор флажков), чтобы указать, что он был частично выбран.

Например, когда вы находитесь на странице SDK в Android Studio, у вас есть набор флажков для разных версий SDK, и каждая версия состоит из источников, инструментов сборки и т. Д. Когда вы выбираете все элементы внутри версии, флажок версии будет иметь нормальный тик, однако, если вы выберете только источники внутри версии, флажок этой версии будет минус или некоторые другие значки. Вы также можете найти это в установщиках, когда есть дополнительные функции, такие как Notepad ++ и многие другие.

Что касается реализации на Java, я не думаю, что в Swing есть какие-либо встроенные решения, вам придется либо написать это самостоятельно, как в post, которые вставляются в комментарии, или вам придется используйте другие библиотеки, такие как JavaFX или другие сторонние.

0

Я думаю, что Swing не поддерживается для создания пользовательского интерфейса. Но этот код имеет ту же функцию. Проверьте это:

myCheckBox.addItemListener(new ItemListener() { 
     public void itemStateChanged(ItemEvent e) { 
      if (e.getStateChange() == ItemEvent.SELECTED) { 
       //Check all Checkbox below 
       childCheckbox1.setSelected(true); 
       childCheckbox2.setSelected(true); 
      } else { 
       //Uncheck all Checkbox below 
       childCheckbox1.setSelected(false); 
       childCheckbox2.setSelected(false); 
      } 
     } 
    }); 
+0

Это только поведение, установленное флажком root на дочерних флажках (если вы проверили, что root все дочерние элементы проверяются), однако это не позволяет OP создавать значок частичного выделения («минус») ... – OliPro007

+0

Частичный выбор появляется только справа. После того как вы проверите его и снимите его снова, он больше не появится. Это просто дизайн пользовательского интерфейса? –

+0

Ну, как правило, он всегда должен появляться, если есть частичный выбор. Вы проверяете 'myCheckBox', он проверяет все дочерние элементы, у вас есть полный выбор. Если вы не проверяете 'myCheckBox', но вы проверяете' childCheckBox1' ** или ** 'childCheckBox2',' myCheckBox' должен иметь значок частичного выбора, и если вы проверите 'childCheckBox1' ** и **' childCheckBox2', myCheckBox' должен иметь полный значок выбора. – OliPro007