循环所有按钮文本的形式

时间:2013-10-21 01:44:49

标签: java loops button

我试图通过表单中的所有按钮文本进行循环,但我无法找到任何Java解决方案!!

我做了类似的事情:

 for(JButton temp : this)
 {
        if(JButton.getText() == "A")
        {
          JButton.enabled(false);
        }
 }

但没有运气

P.S。我的问题不是关于平等的声明!!我想通过窗口中的所有按钮循环。

这是MadProgrammer的工作结果:

for(Component comp : jPanel2.getComponents()) 
            {
                if(comp instanceof JButton)
                {
                   JButton btn = (JButton)comp;                       
                   if(btn.getText().equals("A")) 
                   {
                     btn.setEnabled(false); 
                   }
                }
            }

3 个答案:

答案 0 :(得分:1)

你有很多问题......

除非for(JButton temp : this)实施this

,否则

Iterable<JButton>根本没有意义

if(JButton.getText() == "A")有两个问题。第一个是,getText()不是static方法,所以不能以这种方式调用,第二个是,==不应该用来比较{{1}值......

String有两个问题。首先,JButton.enabled(false);不是enabledstatic实际上是折旧的,因此您应该避免使用它。而是使用enabled

如果不了解按钮的实际管理方式,就无法为您提供准确的解决方案。

如果您尝试迭代某种setEnabled上的按钮,可能会使用类似的内容......

Container

例如。

如果按钮存储在某种for (Component comp : container.getComponents()) { if (comp instanceof JButton) { //... } } 中,您可以使用类似......

的内容
java.util.List

为了检查按钮文本,您应该使用类似的东西(使用前面的示例作为基础)......

for (JButton button : listOfButtons) {
    //...
}

请查看Creating a GUI with Swing了解详情

答案 1 :(得分:0)

看看String compare

      if("A".equals(temp.getText())) // or use if("A".equalsIgnoreCase(temp.getText()))
        {
          temp.setEnabled(false);
        }

而不是

      if(JButton.getText() == "A")
        {
          JButton.enabled(false);
        }

答案 2 :(得分:0)

您的代码存在问题==。每当您比较两个对象的值(此处为String)时,您使用equals()方法而不是==

运算符==用于基本类型。对于对象,它将比较地址而不是对象的值。另一方面,equals()实际上会比较这些值。

尝试:

for(JButton temp : listOfButtons) // I changed the iterable here.
 {
        if("A".equals(temp.getText())) // notice who the caller to .equals() is. It is "A"
        {
          temp.setEnabled(false); // make temp disabled
        }
 }  

不是很苛刻,但你使用的代码完全有缺陷。我纠正了错误;看看它是否适合你。
错误是: 1。 for循环中的按钮源是错误的。 2。 getText()在动态时用作静态方法。 3。您使用的是==而不是等于() 4。 setEnabled()用作静态方法而不是动态