java - java中actionListener的正确使用

标签 java user-interface

我是 java 新手,正在尝试构建一个带有多个按钮和下拉菜单的简单 GUI。我已经成功获得了一个可以工作的 GUI,但真正的问题是如何正确使用 actionListener 方法。为了将操作分配给按钮,我将每个 actionListener 插入到其自己的类中,这是代码:

public class GUI implements something
{
    public static ClientGUI App;
    private JFrame chatWin;
    private JMenuBar menubar;
    private JMenu x;
    private JMenu y;
    private JMenuItem exit;
    private JMenuItem about;


    public GUI()
    {

               /* 
                * some code and parameters
                */

            //creating the menu bar
            JMenuBar menubar = new JMenuBar();
            chatWin.setJMenuBar(menubar);

            JMenu x= new JMenu("menu1");
            menubar.add(x);
            JMenuItem exit = new JMenuItem("menu2");
            x.add(exit);

            JMenu y= new JMenu("Help");
            menubar.add(help);
            JMenuItem about = new JMenuItem("inner menu1");
            y.add(about);

            //action listener for the exit button 
            class exitaction implements ActionListener
            {
                public void actionPerformed(ActionEvent e)
                {
                    System.exit(0);
                }
            }
            exit.addActionListener(new exitaction());

            //action listener for the about button
            class aboutaction implements ActionListener
            {
                public void actionPerformed(ActionEvent e)
                {
                    //some code
                }

            }
        }

    public static void main (String args[])
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                App = new GUI();
            }
        });
    }


}

该代码被认为是整洁且正确的吗?有什么我可以改进或需要改变的吗?

最佳答案

我遵守规则:

如果操作实现很好,我会放入一个内部类。

    public MyFrame extends JFrame {

       // componentes creating, etc

        private static class MyShortAction implements ActionListener {

            @Override
            public void actionPerformed(ActionEvent e){
                // some big implementation
            }

        }

    }

当很短时,我加入了一个匿名类。

myButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e){
        // some small code
    }

});

如果它被其他组件使用,我会提取到顶级类。

public class MyAction implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e){
        // some small code
    }
}

关于java - java中actionListener的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825888/

相关文章:

java - 在后台更新 JavaFX 窗口

java - 修复符号构建中 Retrofit 中的 @Body 参数加密?

java - 计算音乐搜索栏的轨道位置

java - JNI 包装的 DLL 仅在从默认包调用时才有效

java - Object[] 不能在 AsyncTask 中强制转换为 Void[]

java - gradle 5 - windows java.io.IOException : CreateProcess error=206, 文件名太长

c++ - 如何动态创建与其父控件具有相同视觉样式的控件?

delphi - 存在哪些库可以在delphi中创建 "moving/living"UI?

ios - 将模型文件添加到 View Controller ,帮助 UI 正常工作

java - 无法更新面板上的 UI