2017-05-22 62 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); 
      .... 
     } 
    } 
}