Jeff, 접근 방식이 좋은 접근 방법 인 것 같습니다. 나는 똑같은 일을한다. 나는 레지스트리 ActionHandler를 호출은 다음과 같습니다
import com.google.common.collect.ClassToInstanceMap;
import com.google.common.collect.ImmutableClassToInstanceMap;
import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
public class ActionHandler {
private static final ClassToInstanceMap<Action> actionMap =
new ImmutableClassToInstanceMap.Builder<Action>().
put(DefaultEditorKit.CutAction.class, new DefaultEditorKit.CutAction()).
put(DefaultEditorKit.CopyAction.class, new DefaultEditorKit.CopyAction()).
put(DefaultEditorKit.PasteAction.class, new DefaultEditorKit.PasteAction()).
put(RefreshAction.class, new RefreshAction()).
put(MinimizeAction.class, new MinimizeAction()).
put(ZoomAction.class, new ZoomAction()).
build();
public static Action getActionFor(Class<? extends Action> actionClasss) {
return actionMap.getInstance(actionClasss);
}
}
이제 비활성화 할 수는 ZoomAction, 나는 다음 반사적으로 그들을 찾는 나는 행동에 주석을 사용하고
ActionHandler.getActionFor(ZoomAction.class).setEnabled(false);
일반적으로 내가 취하는 접근 방식은 모두 의미가 있습니다. 나는 내가 그 (것)들을 사용할 필요가있을 때 활동을 처리하기 위하여 나가 멀리 베스트를 만나는 것을 시도하고 있다는 것을 짐작한다 ... –