gpt4 book ai didi

java - 使用注册表管理 Swing Action

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:33 25 4
gpt4 key购买 nike

通常,当我创建 Swing(或任何 UI)应用程序时,我会在菜单项和按钮上显示各种操作。我通常会创建一个操作注册表并将操作存储在其中,然后当某些事情发生时,我会根据应用程序的状态在注册表中禁用/启用操作。我不会称自己为狂热的 Swing 开发人员,尽管我非常了解如何使用它,但这是管理 Actions 的非常典型的模式吗?或者有更标准的方法吗?

谢谢,

杰夫

最佳答案

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);

关于java - 使用注册表管理 Swing Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1325369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com