-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);
}
4

2 に答える 2

1

最もクリーンな方法は、単純にすべてのチェックボックスをコレクション (List<JCheckBox>たとえば a ) に配置し、リストを反復処理することです。

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);
            }
        }
    }
}
于 2013-03-23T00:01:26.827 に答える
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);
      } 
   }
}
于 2013-03-23T00:46:41.610 に答える