2011-12-29 97 views
0

所以我有一個問題,我不能解決我想我的GUI應用程序分爲3個JPanels(左,中,右)。我希望左側面板和右側面板具有固定的大小和中心流動性。意義側面板僅在JFrame展開時垂直展開,而中央面板則水平和垂直展開漫遊器。Java - MigLayout seting界限

我將所有面板的最小尺寸設置爲600的高度,但他們只是保持最小尺寸,並且不擴展爲JForm增加我不知道如何設置JFrame邊框的邊界,以便他們擴展它。

package ppe.view; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import net.miginfocom.swing.MigLayout; 

public class UI_View extends JFrame 
{ 
    private JList  browse = new JList(); 
    private JScrollPane rightX = new JScrollPane(); 
    private JButton  btn1 = new JButton("Button 1"); 
    private JButton  btn2 = new JButton("Button 2"); 
    private JButton  btn3 = new JButton("Button 3"); 
    private JButton  btn4 = new JButton("Button 4"); 


    public UI_View() 
    { 
     this.setTitle("Prototype MVC Arhitecture"); 
     this.setMinimumSize(new Dimension(800, 600)); 
     this.setExtendedState(this.MAXIMIZED_BOTH); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLayout(new MigLayout()); 

     JPanel content = new JPanel(new MigLayout()); 
     content.setBackground(Color.black); 

     JPanel right = new JPanel(new MigLayout()); 
     JPanel center = new JPanel(new MigLayout()); 
     JPanel left = new JPanel(new MigLayout()); 

     right.setBackground(Color.red); 
     right.setMinimumSize(new Dimension(200, 600)); 
     right.setMaximumSize(new Dimension(200, 37500)); 

     center.setBackground(Color.green); 
     center.setMinimumSize(new Dimension(400, 600)); 

     left.setBackground(Color.blue); 
     left.setMinimumSize(new Dimension(200, 600)); 
     left.setMaximumSize(new Dimension(200, 37500)); 

     content.add(left); 
     content.add(center); 
     content.add(right); 

     this.setContentPane(content); 
    } 

    public static void main(String[] args) 
    { 
     new UI_View().setVisible(true); 
    } 

} 

我已經tryed他們包圍另一個內容面板,並補充說,面板的contentPane到JFrame中是自動範圍以JFrame的邊界,但事情仍然是非常固定。

回答

1

如果您使用的是MiGLayout爲什麼不在添加組件時配置約束?

此,例如,可以幫助(雖然我是個初學者MiGLayout,太):

content.add(left, "growy"); 
content.add(center, "grow"); //the same as growx, growy 
content.add(right, "growy"); 

在某些情況下,我需要還添加了pushx但我這是在需要的時候不知道。請參閱文檔以獲取更多信息。

編輯:似乎您總是需要爲應該導致列/行增長的組件添加push。否則單獨使用grow會使組件與列/行一樣大,組件又由該列/行中的最大組件定義。如果有更多可用空間,那麼在沒有push關鍵字的情況下,列/行不會增長以填充它。

從文檔:

組件絕不會「推動」行/列的大小使用關鍵字成長變大。

+0

感謝您的幫助,我在尋找增長的限制,但他們似乎沒有幫助。 – 2011-12-29 13:26:22

+0

@kellax,試着用''debug''參數創建你的'MiGLayout'來查看繪製的邊框。另外,嘗試爲中央面板添加'「grow,pushx」'。 – Thomas 2011-12-29 13:29:05

+0

它現在的作品現在左右都是固定的大小和中心。我不得不這樣定義它:對於側面板.add(面板,「growy,pushy」)和中心「grow,pushx」 不完全確定,但我認爲「psuhx或pushy」作爲額外參數方向擴展,如果你想充分填補空間。 – 2011-12-29 13:50:36