2017-05-22 92 views
4

在我的程序中,我有12個不同的切換按鈕,需要同時重置。而不是寫重置按鈕的方法?

buttonOne.setText(""); 
buttonOne.setSelected(false); 
buttonOne.setEnabled(true); 

一遍又一遍地對12個不同的切換按鈕,有沒有辦法在傳遞參數的方法來做到這一點?我只是最近纔開始使用java,而且我從來沒有使用過不是字符串或整數的參數聲明,所以我不確定是否有辦法通過切換按鈕來完成。

回答

4

你可以在通過按鈕作爲參數,以一種新的方法,如果你想觸發一次所有這些按鈕,那麼你可以把這些按鈕在呼籲該參數

private void toggleButton(JToggleButton button) { 
    button.setText(""); 
    button.setSelected(false); 
    button.setEnabled(true); 
} 

// ... 

toggleButton(buttonOne); 
toggleButton(buttonTwo); 
... 
+0

謝謝你,但出於某種原因,我得到一個錯誤,說這是一個無效的方法聲明和返回類型是必需的。你可能知道爲什麼嗎? – quinny

+0

@quinny你的方法應該採取'JButton'而不是'Button'並且不返回任何東西 –

+0

@YCF_L JButton現在給了我「找不到符號」錯誤 – quinny

3

你的方法列表,並做到:

for (JButton button : myListOfButtons) { 
    button.setText(""); 
    button.setSelected(false); 
    button.setEnabled(true); 
} 
3

如果你想所有的按鈕重置您的面板或FRAM可以使用調用這個方法:

private void clearAllFields() { 

    for (Component C : myPanel.getComponents()) { 

     if (C instanceof JButton) { 
      ((JButton) C).setText(""); 
      ((JButton) C).setEnabled(true); 
      ... 
     } 
    } 
} 

女巫會循環拋出所有組件並檢查它是否爲JButton的實例並重置爲默認值。

這樣的好事,你可以使用許多組件考慮您還想重置JTextField中或任何組件,您可以只使用:

private void clearAllFields() { 

    for (Component C : myPanel.getComponents()) { 
     if (C instanceof JButton || C instanceof JTextField) { 
      ((JTextField) C).setText(""); 
      ... 
     } 

     if (C instanceof JButton) { 
      ((JButton) C).setText(""); 
      ((JButton) C).setEnabled(true); 
      ... 
     } 

     if (C instanceof JRadioButton) { 
      ((JRadioButton) C).setSelected(false); 
      ... 
     } 

     if (C instanceof JDateChooser) { 
      ((JDateChooser) C).setDate(null); 
      .... 
     } 
    } 
}