【问题标题】:Method to Reset Buttons?重置按钮的方法?
【发布时间】:2017-10-22 04:04:23
【问题描述】:

在我的程序中,我有 12 个不同的切换按钮需要同时重置。而不是写

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

一遍又一遍地使用 12 个不同的切换按钮,有没有办法通过传递参数在方法中做到这一点?我最近才开始使用 java,而且我从来没有使用过不是字符串或整数的参数声明,所以我不确定是否有办法使用切换按钮来做到这一点。

【问题讨论】:

    标签: java swing methods jtogglebutton


    【解决方案1】:

    您可以将按钮作为参数传递给新方法,然后在该参数上调用您的方法

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

    【讨论】:

    • 谢谢,但由于某种原因,我收到一条错误消息,指出它是无效的方法声明并且需要返回类型。你可能知道为什么吗?
    • @quinny 你的方法应该使用JButton 而不是Button 并且不要返回任何东西
    • @YCF_L JButton 现在给了我“找不到符号”错误
    • @quinny 你必须使用JToggleButton 代替JButton
    【解决方案2】:

    如果您想一次触发所有这些按钮,那么您可以将这些按钮放在一个列表中并执行以下操作:

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

    【讨论】:

      【解决方案3】:

      如果您想重置面板或框架中的所有按钮,您可以使用调用此方法:

      private void clearAllFields() {
      
          for (Component C : myPanel.getComponents()) {
      
              if (C instanceof JButton) {
                  ((JButton) C).setText("");
                  ((JButton) C).setEnabled(true);
                  ...
              }
          }
      }
      

      Witch 将循环抛出所有组件并检查它是否为JButton 的实例并重置为默认值。

      这样做的好处是,您可以使用许多组件,考虑您还想重置 JTextFields 或您可以使用的任何组件:

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

      【讨论】:

        猜你喜欢
        • 2020-07-29
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-12
        • 1970-01-01
        • 2012-08-09
        相关资源
        最近更新 更多