2013-03-22 4 views
-1

Я новичок в java, и у меня есть некоторые флажки и кнопка в окне, я хочу, когда я нажму на эту кнопку, чтобы выбрать все флажки в окне.выберите все флажки в окне

В C# я использую это:

foreach (Control c in this.Controls) { 
    if ((c) is CheckBox) { 
     c.Checked = true; 
    } 
} 

Как я могу это сделать в Java?

это код, который я попытался

for (Component c : this.getComponents()) { 
    if(c instanceof JCheckBox) 
     c.setSelected(true); 
} 

ответ

1

Чистейший путь просто иметь все галочки в коллекции (а List<JCheckBox>, например), и итерацию по списку:

private List<JCheckBox> checkboxesToCheckWhenButtonIsPressed = new ArrayList<JCheckBox>(); 

public MyPanel() { 
    // ... 
    // create the checkboxes, and fill the list of checkboxes 
    // create the button 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      for (JCheckBox checkBox : checkboxesToCheckWhenButtonIsPressed) { 
       checkbox.setSelected(true); 
      } 
     } 
    } 
} 
0

Ваш запрошенный код не будет компилироваться, поскольку он должен быть отличным от JCheckBox, чтобы сделать способ setSelected доступным. Кроме того, цикл не достигнет вложенных контейнеров. Для достижения этой цели можно использовать рекурсивный метод, чтобы сделать вызов в for цикла, первый проходит в ContentPane в JFrame:

void checkAllCheckBoxes(Container container) { 

    for (Component c: container.getComponents()) { 
     if (c instanceof Container) { 
     checkAllCheckBoxes((Container)c); 
     } 

     if (c instanceof JCheckBox) { 
     ((JCheckBox) c).setSelected(true); 
     } 
    } 
} 
Смежные вопросы