-1

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

我做了类似的事情:

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

但没有运气

ps我的问题不在于equals语句!我想循环通过窗口中的所有按钮。

这是MadProgrammer的工作结果:

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

3 回答 3

1

你有很多问题...

for(JButton temp : this)根本没有意义,除非this实现Iterable<JButton>

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

JButton.enabled(false);有两个问题。第一个是,enabled不是staticenabled实际上是折旧的,所以你应该避免使用它。而是使用setEnabled

如果不知道您的按钮实际上是如何管理的,就不可能为您提供准确的解决方案。

如果您尝试遍历Container某种按钮,您可能会使用类似...

for (Component comp : container.getComponents()) {
    if (comp instanceof JButton) { 
        //...
    }
}

例如。

如果按钮存储在某种 中java.util.List,您可以使用类似...

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

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

if ("A".equals(button.getText()) {...}

查看使用 Swing 创建 GUI 以获取更多详细信息

于 2013-10-21T02:14:48.783 回答
0

看看字符串比较

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

代替

      if(JButton.getText() == "A")
        {
          JButton.enabled(false);
        }
于 2013-10-21T01:48:34.860 回答
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.你使用了 == 而不是 equals() 4. setEnabled() 被用作静态方法而不是动态方法

于 2013-10-21T01:51:59.387 回答