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
答案 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");
...
}