gpt4 book ai didi

java - java中actionListener的正确使用

转载 作者:行者123 更新时间:2023-11-30 04:34:27 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com