我指的是回圈 JComboBox 更新的確切問題。我在想,也許不是使用標志或滑鼠監聽器,有沒有辦法自己創建一個可切換的動作監聽器?
到目前為止我寫了這個:
public abstract class ToggledActionListener implements java.awt.event.ActionListener {
private volatile boolean enabled;
protected ToggledActionListener(){
enabled = true;
}
public synchronized void setEnabled(boolean flag){
enabled = flag;
}
public synchronized boolean isEnabled(){
return enabled;
}
}
現在我試圖找到一種方法來取消來自擴展此類的物件的任何 actionPerformed() 呼叫如果啟用為假。
這甚至可能嗎?
uj5u.com熱心網友回復:
創建一個只有 1 個抽象方法的抽象類 ToggledActionListener,如下所示:
public abstract class ToggledActionListener implements java.awt.event.ActionListener {
private boolean isEnabled;
public ToggledActionListener(){
isEnabled = true;
}
public void setEnabled(boolean flag){
isEnabled = flag;
}
public boolean isEnabled(){
return isEnabled;
}
@Override
public final void actionPerformed(ActionEvent e) {
if(isEnabled){
runIfAllowed(e);
}
}
abstract void runIfAllowed(ActionEvent e);
}
然后你可以像這樣使用它:
someButton.addActionListener(someToggledActionListener);
或者
someButton.addActionListener(new ToggledActionListener({
@Override
void runIfAllowed(ActionEvent e){
//some code
}
});
用于someToggledActionLister.setEnabled(false)
避免回圈事件觸發。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516209.html
標籤:爪哇反射