2015-11-19 51 views
0

例如,我有2個複選框和1個按鈕,我的代碼會是這樣的。如何處理多個jcheckbox和一個jbutton JAVA

private class CheckBoxHandler implements ItemListener 
    { 
    @Override 
    public void itemStateChanged(ItemEvent e) 
    { 
     if (chckbxNewCheckBox1.isSelected() && chckbxNewCheckBox2.isSelected()) 
     { 
      checkboxcheck1 = 1; 
      checkboxcheck2 = 1; 

     } 
     else if(chckbxNewCheckBox1.isSelected()) 
     { 
      checkboxcheck1 = 1; 

     } 
     else if(chckbxNewCheckBox2.isSelected()) 
     { 
      checkboxcheck2 = 1; 

     } 
    } 
    } 

    private class ButtonHandler implements ActionListener 
    { 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     if (checkboxcheck1 == 1 && checkboxcheck2 == 1) 
     { 
      textFieldSum.setText(String.valueOf(counter)); 
      textFieldSum1.setText(String.valueOf(counter1)); 
     } 
     else if(checkboxcheck1 == 1) 
      { 
      textFieldSum.setText(String.valueOf(counter)); 
      } 
     else if (checkboxcheck2 == 1) 
     { 
       textFieldSum1.setText(String.valueOf(counter1)); 
     } 
     else 
     { 
      checkboxcheck1 = 0; 
     } 
    } 
    } 

那麼是什麼,如果我有2個以上的複選框像10或more.It將永遠以使在CheckBoxHandler和ButtonHandler if語句。任何人知道如何使它工作,如果我有超過2複選框? 我的程序讀取文件並計算文件中的特定字符,然後顯示它。顯示它的方法是點擊複選框並點擊yes按鈕。但是,如果我要做if語句,我將永遠需要。你們有什麼想法?非常感謝你的幫助。

+0

你會使用一個數組和一些循環。你可能想閱讀一些關於Java的基礎知識(https://docs.oracle.com/javase/tutorial/)。 – Turing85

回答

0

聲明覆選框的數組像這樣

CheckBox[] checkboxes = new CheckBox[10]; // or JCheckBox if using swing 

並在構造函數,用

String[] filenames = { ... }; // have a list of files? 
for(int i=0;i<checkboxes.length;i++){ 
    // for each box, create and add it to your panel 
    mypanel.add(checkboxes[i]=new CheckBox(filename[i])); 
    checkboxes[i].addItemListener(mylistener); 
} 

創建它們,然後在監聽器,你可以有

public void itemStateChanged(ItemEvent e) { 
    boolean state = ((CheckBox)e.getSource()).isSelected(); 
    // do something with this state if needed 
} 

但通知你根本不需要物品監聽器。 在按鍵監聽,你可以做

public void actionPerformed(ActionEvent e) { 
    for (int i=0;i<checkboxes.length;i++){ 
    if(checkboxes[i].isSelected()){ 
     // do something with file i 
    } 
    } 
} 

需要注意的是,如果你的文件操作需要一定的時間,你必須做的處理在一個新的線程,不只是在按鈕處理!

+0

但我已經創造了所有東西。 Java有任何有關偵聽器隱藏文本字段的方法,然後當我單擊複選框,然後單擊文本字段將出現的按鈕? http://postimg.org/image/f834lwtyf/ –

+0

1)你不應該「已經創造了一切」。這是一個艱難時期的祕訣!關鍵是,你不應該創建像'checkboxcheck1'等編號變量。 –

+0

2)re:隱藏文本字段,是的,這很簡單,但你應該把它作爲一個新的問題。 –