2011-02-28 159 views
1

我正在用java寫一個程序GUI。我想要一個JLayeredPane作爲我的JFrame的ContentPane。在我的JLayeredPane上有兩層:一層是Canvas(canvas1),另一層是JPanel(jPanel5)。我使用Netbeans IDE並生成此代碼:Java:JLayeredPane調整大小問題

canvas1.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); 
    canvas1.setBounds(0, 0, -1, -1); 
    jLayeredPane1.add(canvas1, javax.swing.JLayeredPane.PALETTE_LAYER); 

    jPanel5.setBounds(0, 0, 670, 550); 
    jLayeredPane1.add(jPanel5, javax.swing.JLayeredPane.DEFAULT_LAYER); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE) 
    ); 

pack();

當我運行我的程序時,我看到一個奇怪的事件!當我改變JFrame的大小時;主JLayeredPane的大小沒有改變。我使用了不同的backGround顏色作爲組件,對我來說很明顯JLayered的尺寸是永久性的,但是我將它設置爲垂直和水平尺寸的屬性。 JFrame可調整大小,但主要jLayeredPane的大小是永久性的。

如何讓jLayeredPane調整爲我的JFrame?!

謝謝

enter image description here

回答

1

嘗試使用默認的BorderLayout,而不是你現在使用的GroupLayout。只需註釋掉組與創建GroupLayout的啓動線,並加入這一行:

getContentPane().add(jLayeredPane, BorderLayout.CENTER); 

的BorderLayout.CENTER參數的。新增()方法告訴您要指定窗口小部件,以填補該BorderLayout管理你的窗戶的中心。

+0

謝謝但是,在生成的netbeans代碼中添加此代碼是不可行的。我如何設置他的JLayeredPane屬性? – sajad

+0

請勿使用Netbeans生成代碼。閱讀Swing教程(http://download.oracle.com/javase/tutorial/uiswing/TOC.html),其中有大量關於如何創建自己的GUI的示例,因此您不依賴於IDE。 – camickr

+0

一旦你的項目工作,你可以從你的IDE中取出你的源代碼,並調整它以修復你的IDE造成的所有問題。 – Raceimaztion

1

您可以將JLayeredPane與JFrame一起更改。 在(NetBeans IDE)設計模式下 - 右鍵單擊​​JLayeredPane,然後在彈出菜單上懸停在「自動調整大小」上,然後檢查水平垂直。 這樣,JLayeredPane的大小將相對於JFrame發生變化。