2011-12-29 53 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