Swing 在run()中执行的写操作与在main之外执行的写操作有什么区别

Swing 在run()中执行的写操作与在main之外执行的写操作有什么区别,swing,Swing,我编写像在main之外那样执行的操作代码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jTextField1.setText("do something"); } 它可以像跑步一样写 jButton1.addActionListener(new java.awt.event.ActionListener

我编写像在main之外那样执行的操作代码

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
    jTextField1.setText("do something");
}
它可以像跑步一样写

       jButton1.addActionListener(new java.awt.event.ActionListener(){


            public void actionPerformed(ActionEvent e) {
                jTextField1.setText("aaaaaaaaaa");
            }
        });
这两者之间的区别在于是否存在与编程开销相关的问题,哪种编码方式更好

我正在使用netbeans,当我在运行中编写它时,它需要使jTextField1成为静态的,因为主方法是静态的,所以我认为第一个方法不好,因为它会占用内存,直到程序停止。我说的对吗


2.如果我想让所有按钮操作都在不同的类中编写,那么我如何以swing形式实现它。

尝试将main尽量小,将其简化为仅调用构造函数和setVisibletrue

    public void run() {
        new NewJFrame().setVisible(true);
    }
原因是您可能需要在其他应用程序中重用您的类。最好在类中创建所有小部件,保持Netbeans布局

如果您使用第二个选项,并且碰巧需要使用它,那么它将引用ActionListener,而不是您的类正在扩展的Swing小部件

要将ActionListener放入另一个类,请创建如下类:

public class AListener implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("B1"))
            JOptionPane.showMessageDialog(null, "B1 clicked!");
        else  if (e.getActionCommand().equals("B2"))
            JOptionPane.showMessageDialog(null, "B2 clicked!");
    }

}
并将ActionListener添加到构造函数中的按钮,在NB的initComponents之后,如下所示:

public NewJFrame() {
    initComponents();
    ActionListener al = new AListener();
    jButton1.addActionListener(al);
    jButton2.addActionListener(al);
}
为此,您必须为每个按钮添加适当的setActionCommand字符串:

    jButton1.setActionCommand("B1");
    jButton2.setActionCommand("B2");
在Netbeans中,如果您更改每个按钮的创建后代码以包含它应该包含的字符串,则可以轻松地完成此操作

我认为在正常情况下,如果你没有60个按钮,或者更多的按钮,那么还是坚持标准为好。如何设计应用程序是一个品味问题


大多数情况下,应用程序的操作必须共享类本地的数据详细信息。为了避免显式地将该信息传递给AListener,并且为了能够使用它,请将ActionListener放在您正在使用的类中

运行哪个类的方法?可运行的,线程还是其他什么?但不清楚,就像crystal一样,如果我有这么多按钮,每个按钮都有不同的动作,那么我要做的是创建许多类似aListner的类,每个类都有actionPerformed方法,我将在其中定义动作。在构造函数NewJFrame中调用它和在run中定义它有什么区别。如果您举个例子这对我来说会更好,因为我是swing新手。如果您有许多按钮,您仍然可以使用一个ActionListener,但它将有助于使用:public void setActionCommandString命令和public String getActionCommandString命令。在我的Netbeans安装完成后,我将在我的答案中添加一个示例…:-我已经更改了上面的示例,用一个ActionListener类支持两个按钮。我认为你最好忘记在主运行中定义东西。仅仅代码的可重用性就足够了。还要考虑你必须把所有东西定义为静态的。