-1

我在这里有这段代码来创建一个键绑定:

KeyStroke k = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
getInputMap(WHEN_IN_FOCUSED_WINDOW).put(k, k.toString());
getActionMap().put(k.toString(), new AbstractAction()
{ 
    public void actionPerformed(ActionEvent e)
    {
        //put action here
    }
});  

问题是我的程序中有 8 个。每一个都创建一个单独的类文件来保存抽象类。如果可能的话,我将如何重写它以限制创建的类的数量。(我已经搜索过这个,但是减少抽象类并没有提供任何有用的东西)

4

2 回答 2

5

除了@EdC 在此建议的扩展之外,您还可以使用组合,如本示例所示其中使用Action指定给封闭构造函数的参数JButton。此外,一个人Action可以其转发ActionEvent给另一个人Action,如图所示KeyPadPanel

于 2012-09-15T01:50:02.410 回答
3

因此,如果您用一些重复的例子来更新问题,那么会有什么帮助。例如,它只是重复的匿名内部类的样板。如果是这样,您将被困在 java 8 之前。还是方法主体的某些重要部分被复制了?

在这种情况下,您可以使用公共代码添加一个抽象超类。这实际上会增加类的数量,但这通常不是问题。例如

private static abstract class MyBaseAction extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
        // Do Common Stuff
        // ....

        doSpecificStuff(e);
    }

    protected abstract void doSpecificStuff(ActionEvent e);
}

然后将其子类化,而不是为您的匿名内部类进行抽象操作。

于 2012-09-15T01:14:00.430 回答