【问题标题】:Netbeans GUI editor generating its own incomprehensible codeNetbeans GUI 编辑器生成自己难以理解的代码
【发布时间】:2011-02-03 10:12:36
【问题描述】:

在 netbeans 中创建一个新项目时,如果我选择 JAVA 桌面应用程序,它会创建一些我完全不认识的代码,就像我在 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 和其他类?

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

【问题讨论】:

    标签: java user-interface swing netbeans


    【解决方案1】:

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

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

    而不是Java Application

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

    附录:使用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(注意“生成的代码”):

    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
     }
    

    【讨论】:

      【解决方案2】:

      您会发现更多关于 org.jdesktop.application.SingleFrameApplication here 的信息。然而,简要说明:这是Swing Application Framework 的一部分。 Matisse(现在称为 Java Swing GUI Builder)严格按照应用程序框架工作,AFAIK,而不是一般的 Swing 应用程序。基本上,如果您使用的是原始 Swing,那么您几乎是靠自己的。

      【讨论】:

      • -1 因为...?可能只是礼貌性冲洗一下,然后再掉下便便?
      • 我猜反对票是因为答案并不完全正确。 Matisse 不仅可以与 Swing 应用程序框架一起使用——它也可以与“原始”Swing 一起使用,而且我很确定 NetBeans 的人使用它来构建他们的 GUI
      猜你喜欢
      • 1970-01-01
      • 2013-10-20
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      相关资源
      最近更新 更多