一尘不染

Java Netbeans GUI编辑器生​​成自己无法理解的代码

java

在netbeans中创建新项目时,如果我选择JAVA Desktop应用程序,它将创建一些代码,这些代码我不会像在Swing中学到的那样完全无法识别。

它导入软件包,例如:

org.jdesktop.application.SingleFrameApplication;

同样,main()的声明如下所示:

public static void main(String[] args) {
            launch(DesktopApplication2.class, args);
        }

这对我对JFrame,JPanel等的了解确实没有任何意义。

如果我尝试从头开始编写netbeans应用程序,则可以编写自己的swing应用程序,但找不到GUI编辑器。

从头开始创建Java应用程序时如何带GUI编辑器?
任何人都可以向我解释org.jdesktop.application.SingleFrameApplication和其他类吗?
请帮忙。这真令人沮丧。


阅读 436

收藏
2020-02-27

共1个答案

一尘不染

你可能无意中选择了 Java Desktop Application

基于Swing应用程序框架(JSR 296)创建桌面应用程序的框架。该模板提供了基本的应用程序基础结构,例如菜单栏,窗口状态的持久性和状态栏。使用此模板,你还可以生成代码来为数据库表创建GUI界面。

而不是 Java Application

在标准IDE项目中创建一个新的Java SE应用程序。你还可以在项目中生成一个主类。标准项目使用IDE生成的Ant构建脚本来构建,运行和调试项目。

附录:File > New File > Java GUI Forms用于添加JPanel可以从main()run()方法实例化的高级容器,例如enclosing 。

例如Main.main():

package temp;
import java.awt.EventQueue;
import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(new NewJPanel());
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

以及一个NewJPanel内置的GUI编辑器(请注意“ Generated Code”):

package temp;
public class NewJPanel extends javax.swing.JPanel {

    /** Creates new form NewJPanel */
    public NewJPanel() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();

        jLabel1.setText("Hello, world!");

        org.jdesktop.layout.GroupLayout layout =
            new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(163, 163, 163)
                .add(jLabel1)
                .addContainerGap(157, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(113, 113, 113)
                .add(jLabel1)
                .addContainerGap(171, Short.MAX_VALUE))
        );
    }// </editor-fold>

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    // End of variables declaration
 }
2020-02-27