2013-06-01 85 views
0

我想設置JPanel的寬度和高度,但它不工作。 這是代碼。jpanel setSize()不工作

import java.awt.*; 

import javax.swing.*; 

public class FirstGuiApp extends JFrame { 

    public static void main(String[] args) { 
     JFrame frm = new JFrame("first gui app"); 
     JPanel txtPanel = new JPanel(); 
     txtPanel.setBackground(Color.cyan); 
     txtPanel.setSize(200,50);// **not working** 

     frm.getContentPane().add(BorderLayout.NORTH,txtPanel); 
     frm.setVisible(true); 
     frm.setSize(450, 350); 
     frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frm.setLocationRelativeTo(null); 
    } 
} 

無法理解的錯誤..

+0

請勿使用setSize()。每個組件具有佈局管理器用作大小組件大小的指導的首選大小。每個佈局管理器可以根據佈局管理器的規則使用/忽略首選大小。 因此,當您添加組件到面板時,它將自動具有首選大小。 沒有理由玩空板的大小。 – camickr

+0

所以......在當前的情況下..是不可能增加jpanel的大小.. ?? – Pradeep

+0

您可以覆蓋JPanel的'getPreferredSize()'方法。但不要這樣做!瞭解如何正確使用Swing。面板是空的,所以不需要這樣做。問一個現實生活中的問題,然後我可以給你一個合適的解決方案。使用佈局管理器的要點是,您不必猜測面板的合適大小應該是多少。 – camickr

回答

0

嘗試使用frm.getContentPane().add(txtPanel)frm.getContentPane().add(BorderLayout.CENTER,txtPanel);

組件根據其首選大小和容器大小的約束佈局。 NORTH和SOUTH組件可能水平拉伸; EAST和WEST組件可能會被垂直拉伸; CENTER組件可以水平和垂直拉伸以填充剩下的空間。

因此,如果不給出約束條件,您必須將組件添加到Center中。默認情況下,我們無法增加位置。

+0

如何設置北部相應增長.. ?? – Pradeep

+0

@Narendra我編輯了答案。爲了讓它成長,這是不可能的 –