【发布时间】:2021-08-25 20:48:47
【问题描述】:
我正在尝试创建一个在满足某些条件时启用的 JButton。程序将setEnabled(false)设置为初始值,但更新后应该是setEnabled(true)。
我尝试了几件事。这里有一些代码:
public class SwimAction extends AbstractAction {
private final PoolModel poolModel;
private final Swimmer swimmer;
public SwimAction(PoolModel poolModel, Swimmer swimmer) {
super("GO!");
this.poolModel = poolModel;
this.swimmer = swimmer;
// default
setEnabled(false);
}
我尝试了以下方法:
// Replaced the setEnabled(false) by setEnabled(checkGo())
public boolean checkGo(){
return(pool.isNotOccupied());
}
// Overwrite setEnabled
@Overwrite
public void setEnabled(boolean bool){
boolean oldBool = this.enabled;
if (oldBool != bool && pool.isNotOccupied()) {
this.enabled = bool;
this.firePropertyChange("enabled", oldBool, bool);
}
}
但是,它们都不起作用。任何人都知道如何在满足特定条件(pool.isNotOccupied())时启用按钮?
【问题讨论】:
-
是什么触发了条件的变化? 这个是你需要连接你的监听器的地方
-
所以你建议我应该将监听器附加到
pool.isNotOccupied()更改的点? -
不,给
setOccupied(boolean occupied)方法添加一个监听器 -
@HovercraftFullOfEels 谢谢!我会试试的!
标签: java swing components jbutton isenabled