2016-01-20 63 views
1

我正在使用尺寸爲800x600的JFrame。 我想要做的是讓這樣的:JFrame不顯示Jpanel的權利

enter image description here

黑色面板上有他的內部2個其他面板用的每300×300大小。

結果是黑色面板位於框架和麪板之間的頂部,並且中間的紅色面板位於左側(如已放置)。另外,如果我取出黑色面板右側面板中充滿着整個框架...

這是代碼:

//create the left part of the screen 
    JPanel leftPanels = new JPanel(); 
    leftPanels.setLayout(new GridLayout(2,1)); 
    leftPanels.setSize(new Dimension(300,600)); 
    // just to illustrate the 2 panels inside of the black panel. 
    //leftPanels.add(new JPanel()); 
    //leftPanels.add(new JPanel()); 

    //create the right part 
    JPanel rightPanel = new JPanel(); 
    rightPanel.setSize(new Dimension(500,600)); 
    rightPanel.setBackground(Color.red); 

    this.add(leftPanels); 
    this.add(rightPanel); 

    this.validate(); 
    this.repaint(); 

有一種簡單的方法來解決這一問題?

我也試過在JFrame的一個網格佈局,但是,讓我2個板400X600每個

+0

你從來沒有添加rightPanel – YounesM

+0

抱歉,我的壞,我沒有複製它的權利 – Ferryzijl

+0

爲什麼不使用FlowLayout? –

回答

0

嘗試將幀的佈局設置爲null。然後使用setBounds定位面板。

+0

有點作品,thnx! – Ferryzijl

+0

1)Java GUI必須在不同的語言環境中使用不同的PLAF來處理不同的操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 2)而且這在任何情況下都應該是一個評論。 –

-1

如果你試圖設置面板相對一個從另一組框架佈局爲空

this.getContentPane().setLayout(null); 

那麼你將能夠絕對地放置它們。 欲瞭解更多信息:Doing Without a Layout Manager (Absolute Positioning)

+0

它不起作用,如果你刪除黑色面板的右側面板將填充框架,如果我添加的東西到黑色的框架它會把它放在中心 – Ferryzijl

1

首先,使用的FlowLayout這樣

setLayout(new FlowLayout(FlowLayout.LEFT)); 

其次,請使用setPreferedSize,而不是針對的setSize的JPanels

leftPanels.setPreferredSize(new Dimension(300,600)); 

我不知道什麼是一下現金出納機,但它看起來像你沒有將右面板添加到JFrame,所以確保你添加它。

+0

已經添加了右側面板,我複製了它錯誤 – Ferryzijl

+0

請參閱[我是否應該避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法?](http://stackoverflow.com/q/7229226/418556)(是)。長話短說。在這種情況下,最好重寫'getPreferredSize'方法,而不是調用'setPreferredSize' ..但+1是唯一正確的方向。 –