2010-04-01 80 views
7

當在netbeans中創建一個新項目時,如果我選擇JAVA Desktop應用程序,它會創建一些代碼,我不會在所有的地方認識到我學到的東西。Netbeans GUI編輯器生​​成自己難以理解的代碼

它進口的包裝,如:

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和其他類嗎?

請幫忙。這真令人沮喪。

回答

23

你可能無意中選擇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 
} 
+0

另請參見[*使用Swing應用程序框架(JSR 296)*](http://java.sun.com/developer/technicalArticles/javase/swingappfr/)。 – trashgod 2012-03-03 12:37:51

1

你會發現更多關於org.jdesktop.application.SingleFrameApplicationhere。不過簡要介紹:這是Swing Application Framework的一部分。 Matisse(現在稱爲Java Swing GUI Builder)嚴格按照應用程序框架工作,AFAIK,而不是一般的Swing應用程序。基本上,如果你正在使用原始Swing,那麼你幾乎完全靠自己。

+0

-1因爲...?可能在放棄一個蛻皮之前,只是在這裏禮節性的沖洗吧? – 2010-05-01 13:57:03

+0

我猜downvote是因爲答案不完全正確。 Matisse不僅可以與Swing應用程序框架一起工作 - 它還可以與「原始」Swing一起使用,並且我非常確定NetBeans人員使用它來構建它們的GUI – 2011-07-28 21:12:21