2011-12-30 41 views
0

我試圖創建一個簡單的幻燈片程序,如Powerpoint。爲了設計它的GUI,我使用了Netbeans,然後將Netbeans的GUI代碼複製到Eclipse中。NetBeans vs Eclipse的Java佈局定位

Netbeans的生成下面的代碼:

pg = new javax.swing.JPanel(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    jPanel1 = new javax.swing.JPanel(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    setBackground(new java.awt.Color(153, 153, 153)); 

    pg.setBackground(new java.awt.Color(255, 255, 255)); 
    pg.setForeground(new java.awt.Color(255, 255, 255)); 
    pg.setPreferredSize(new java.awt.Dimension(255, 234)); 

    javax.swing.GroupLayout pgLayout = new javax.swing.GroupLayout(pg); 
    pg.setLayout(pgLayout); 
    pgLayout.setHorizontalGroup(
     pgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 357, Short.MAX_VALUE) 
    ); 
    pgLayout.setVerticalGroup(
     pgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 257, Short.MAX_VALUE) 
    ); 

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
    jPanel1.setLayout(jPanel1Layout); 
    jPanel1Layout.setHorizontalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 62, Short.MAX_VALUE) 
    ); 
    jPanel1Layout.setVerticalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 279, Short.MAX_VALUE) 
    ); 


    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addComponent(pg, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE) 
     .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(pg, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE) 
      .addContainerGap()) 
    ); 

    pack(); 

我的問題是,我想在右邊的jPanel1改變我自己的類延伸JPanel。要做到這一點,我寫道:

JPanel jPanel1 = new JPanel(); 
jPanel1.add(new ToolBoxGUI("ToolBox")); 

但是當我運行的代碼,還有右邊沒有ToolBoxGUI類的按鈕。我應該如何解決這個問題?

+0

一種方式初始化JPANEL1做到這將是一個bean添加到NetBeans GUI。我目前沒有和我一起開發程序,但我認爲在GUI創建者的右邊有一個工具箱。其中一個選項是添加一個bean。點擊「創建Bean」並輸入「ToolBoxGUI」作爲類名稱。然後你可以將它拖到面板上。 – eboix 2011-12-30 23:12:26

+0

從長遠來看,手工設計您的用戶界面會更好。 [佈局管理器可視化指南](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)將幫助你理解這些差異,但總的來說,我發現'BoxLayout'(和Box類),BorderLayout和FlowLayout是最有用的。我從來沒有使用[米格佈局經理](http://miglayout.com/),但我知道有些人真的很喜歡它。並堅持使用NetBeans ...長此以往,你會更快樂:) – Paul 2011-12-30 23:55:42

回答

0

jPanel1使用GroupLayout。爲了可見,您的ToolBoxGUI必須添加到此GroupLayout中。如果你想要的是讓ToolBoxGUI JPANEL1的獨特成分,然後刪除這臺JPANEL1佈局代碼:

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
jPanel1.setLayout(jPanel1Layout); 
jPanel1Layout.setHorizontalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    .addGap(0, 62, Short.MAX_VALUE) 
); 
jPanel1Layout.setVerticalGroup(
    jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    .addGap(0, 279, Short.MAX_VALUE) 
); 

jPanel1.setLayout(new BorderLayout()); 

更換或者,如果你想與ToolBoxGUI取代JPANEL1,除去上述相同的代碼,並與

jPanel1 = new ToolBoxGUI();