Netbeans GUI 编辑器生成自己难以理解的代码

Posted

技术标签:

【中文标题】Netbeans GUI 编辑器生成自己难以理解的代码【英文标题】:Netbeans GUI editor generating its own incomprehensible code 【发布时间】: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 和其他类?

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

【问题讨论】:

【参考方案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

以上是关于Netbeans GUI 编辑器生成自己难以理解的代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 netbeans GUI builder 进行 JTable 绑定

如何在 NetBeans GUI Builder 中包含自定义面板?

Netbeans GUI SQL 查询

Java Netbeans 8.0 Jframe GUI程序 - arraylist中的每个索引值都没有显示在jtextArea中的各行上

netbeans 显示乱码~高手求助!会追加!!!!!!!!!!!!

在 NetBeans GUI 设计器中重用 JPanel