在netbeans中创建新项目时,如果我选择JAVA Desktop应用程序,它会创建一些我完全不了解的代码,这是我从中学到的。

它导入软件包,例如:

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和其他类吗?

  • 请帮忙。这真令人沮丧。

    最佳答案

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


    而不是Java Application


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

    例如,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);
                }
            });
        }
    }
    

    以及在GUI编辑器中内置的NewJPanel(注意“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
     }
    

    09-11 06:27