我试图通过表单中的所有按钮文本进行循环,但我无法找到任何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);
}
}
}
答案 0 :(得分:1)
你有很多问题......
除非for(JButton temp : this)
实施this
,否则 Iterable<JButton>
根本没有意义
if(JButton.getText() == "A")
有两个问题。第一个是,getText()
不是static
方法,所以不能以这种方式调用,第二个是,==
不应该用来比较{{1}值......
String
有两个问题。首先,JButton.enabled(false);
不是enabled
而static
实际上是折旧的,因此您应该避免使用它。而是使用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)
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()用作静态方法而不是动态