Java-需要帮助设置JMenuItem的名称

时间:2014-07-11 12:37:23

标签: java

if (calEvt.getSiSrvOrdNbr() != null) {
        final JMenuItem menuItem = new JMenuItem(
                new SisCrossAppJumpAction(system, SisJumpActionTarget.SERVICE_ORDER) {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected Multimap<String, String> getExtraData() {
                        Integer siServiceOrderNumber =        sisServiceOrder.getSiSrvOrdNbr();//calEvt.getSiSrvOrdNbr();
                        Long saCustomerIdNumber = sisServiceOrder.getSaCustIdNbr();
                        Multimap<String, String> extraData = ArrayListMultimap.create();

                        if (!StringUtil.isNullOrEmpty(saCustomerIdNumber.toString()) || !StringUtil.isNullOrEmpty(
                                siServiceOrderNumber.toString())) {
                            addTarget(extraData);
                            extraData.put("saCustIdNbr", saCustomerIdNumber.toString());
                            extraData.put("siSrvOrdNbr", siServiceOrderNumber.toString());
                        }
                        return extraData; //todo test service order populate info
                    }
                }
        );
        linkMenu.add(menuItem);
    }

上面的代码段用于在点击JMenuItem时跳转到另一个应用程序。通过此方法,名称为空,并且JMenu中显示空白字段。我正在寻找一种方法来设置动作的名称。通常情况下,我会使用类似

的内容
JMenuItem menuItem = new JMenuItem(new AbstractAction("name of JMenuItem here") {

但在这种情况下,我认为这是不可能的?任何帮助表示赞赏 (SISCrossAppJumpAction扩展了AbstractAction

2 个答案:

答案 0 :(得分:1)

检查SisCrossAppJumpAction的构造函数。它需要调用super("name")来设置名称。

或者您可以在匿名代码块中使用putValue(NAME, "name")

... new SisCrossAppJumpAction(...) {
    { putValue(NAME, "name"); }
}

答案 1 :(得分:1)

private final Action exitAction = new AbstractAction() {

    {
        putValue(NAME, "Exit");
        putValue(SHORT_DESCRIPTION, "Exit the application.");
    }

您可以使用初始化程序块{ ... }

此构造对于其他内容非常有用,也可用作static { ... }

static final Map<String, String> map = new HashMap<>();
static {
    map.put("word", "vorto");
    ...
}
相关问题