禁用匿名内部类中的按钮
我有这行代码,我想在添加乘客后禁用该按钮。我想禁用该按钮。 seats[i].setEnabled(false)
不起作用,因为它位于匿名内部类中。
JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray
for (int i = 0; i < 40; i++)
{
seats[i] = new JButton();//creating the buttons
seats[i].setPreferredSize(new Dimension(50,25));//button width
panel4seating.add(seats[i]);//adding the buttons to the panels
final int seatingID = i; // Create a local final variable so it can be passed to the anonymous innerClass...
seats[i].addActionListener(new ActionListener()
{ //anonymous inner class
public void actionPerformed(ActionEvent evt)
{
String firstName = showInputDialog();
String lastName = showInputDialog();
sw101.AddPassenger(firstName, lastName, seatingID);//adding a pasenger
//I want to add a line here that disables the button.
}
});
}
I have these line of code and I want to disable the button after a passenger has been added. I want to disable the button. seats[i].setEnabled(false)
won't work since it's inside an anonymous inner class.
JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray
for (int i = 0; i < 40; i++)
{
seats[i] = new JButton();//creating the buttons
seats[i].setPreferredSize(new Dimension(50,25));//button width
panel4seating.add(seats[i]);//adding the buttons to the panels
final int seatingID = i; // Create a local final variable so it can be passed to the anonymous innerClass...
seats[i].addActionListener(new ActionListener()
{ //anonymous inner class
public void actionPerformed(ActionEvent evt)
{
String firstName = showInputDialog();
String lastName = showInputDialog();
sw101.AddPassenger(firstName, lastName, seatingID);//adding a pasenger
//I want to add a line here that disables the button.
}
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
因为当您这样做时:
在匿名内部类中,您将在
ActionListener
实例上调用该方法。 不是 JButton。试试这个:
Because when you do:
inside the anonymous inner class, you're calling that method on the
ActionListener
instance. not the JButton.Try this:
一种方法是:
((JButton)ae.getSource()).setEnabled(false);
:EG
这是基于您早期代码的 SSCCE。
屏幕截图
One way is:
((JButton)ae.getSource()).setEnabled(false);
:E.G.
Here is an SSCCE based on your earlier code.
Screenshot
尝试将其导出为类字段,它应该这样工作:
Try to export it as a class field, it should work that way:
尝试
seats[i].setEnabled(false);
Try
seats[i].setEnabled(false);