java - 重写代码,在不改变其行为的情况下提高其可读性

标签 java swing

公开课A2{

public class B implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Fing");
    }
}

public class C implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Fang");
    }
}

public class D implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("Foom");
    }

}

public A2(){
    JButton a = new JButton("Fing");
    JButton b = new JButton("Fang");
    JButton c = new JButton("Foom");

    a.addActionListener(new B());
    b.addActionListener(new C());
    c.addActionListener(new D());


}

public static void main(String[] args) {
    A2 a2 = new A2();

}

我遇到的问题很简单,但也很复杂。我希望它能够缩短代码而不修改其功能。例如,代码向许多actionlisteners和actionperformed显示,我试图将其变成一个类,取出System.out.println();并在其上输入字符串值。然而,编码并不是以这种简单的方式工作的。请帮助我简化这段代码并提高可读性。谢谢。

最佳答案

不可能知道你可以做什么,我个人是自记录代码的粉丝,所以有时,你在尝试优化解决方案时需要小心。

我的第一个想法可能是从 Action's API 开始,它允许您设计一个独立的工作单元

public class CommonAction extends AbstractAction {

    public CommonAction(String name) {
        putValue(NAME, name);
        putValue(SHORT_DESCRIPTION, "This is a tool tip for " + name);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println(getValue(NAME));
    }

}

如果需要,您可以进一步扩展它以提供更多自定义,覆盖 actionPerformed 方法,但这取决于您。

然后您只需应用到您的按钮...

public class A2 {

    public A2() {
        JButton a = new JButton(new CommonAction("Fing"));
        JButton b = new JButton(new CommonAction("Fang"));
        JButton c = new JButton(new CommonAction("Foom"));
    }

}

或者您的菜单或按键绑定(bind),Action 是一个相当灵活的 API,受到许多其他组件的支持

关于java - 重写代码,在不改变其行为的情况下提高其可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420212/

相关文章:

java - JPA 2.1/hibernate 5 : Search on inner type of Composite User Type with criteria API

java - Android 从 TypedArray 获取字符串数组

java - java中的itext,不能使用PdfContentByte cb = writer.getDirectContent();

java - 图形对象未显示在屏幕上

java - 无法从 JButton 获取任何输入,我做错了什么?

java - 如何将多个 foreach 压缩为一个 for-each ?

Java JButton action执行卡住

java - JLists 中 JButton 监听器事件的多个实例

java - 添加 JScrollPane 时 JTextArea 消失

java - Java中如何找到焦点的JTextField?