java中的动作地图
是否有一种方法可以使用ActionMap查找在不按“F4”的情况下执行调用的动作XXXAction()java中的动作地图,java,swing,Java,Swing,是否有一种方法可以使用ActionMap查找在不按“F4”的情况下执行调用的动作XXXAction() 非常感谢 我可以提出两种可能的方法: 使用组件注册您的操作,例如JButton。这样,当您用鼠标手动单击按钮时,将调用操作 在类XXX上定义调用动作的方法invokeAction(),方法是通过键从ActionMap检索动作,或者保留对动作的显式实例变量引用并将其放置在ActionMap中 一般守则是: public class XXX { public static void ma
非常感谢 我可以提出两种可能的方法:
组件
注册您的操作,例如JButton
。这样,当您用鼠标手动单击按钮时,将调用操作
XXX
上定义调用动作的方法invokeAction()
,方法是通过键从ActionMap
检索动作,或者保留对动作的显式实例变量引用并将其放置在ActionMap
中public class XXX
{
public static void main(String args[]) {
JComponent comp = new JTable(); // some panel or table
comp.getInputMap().put(KeyStroke.getKeyStroke("F4"), "xxxaction");
comp..getActionMap().put("xxxaction", new XXXAction());
}
public class XXXAction extends AbstractAction
{
@Override
public void actionPerformed(ActionEvent e)
{
// Something;
}
}
}
您需要知道ActionEvent是否需要字符串值。但是。。有一件事。。ActionEvent(..)中的“命令字符串”是什么意思??现在,我给出了一个空字符串,事情似乎在运行。让它空着好吗?通常它是空的。但是,某些操作可能需要参数。例如,我认为编辑器工具包中的默认FontSize操作需要一个字符串,该字符串可以转换为整数值(8、10、12…)用作字体大小。如果要创建自定义操作,则可以控制是否需要字符串值。噢。。现在我明白了。。非常感谢。
Action action = component.getActionMap().get("...");
if (action != null)
{
ActionEvent ae = new ActionEvent(component, ActionEvent.ACTION_PERFORMED, "");
action.actionPerformed( ae );
}