使用MiGLayout设置JPanel的大小

时间:2011-12-03 09:54:45

标签: java swing layout jpanel miglayout

我正在使用MiGLayout创建几个不同的JPanel,但是我在调​​整其中一个时遇到了问题。下面的图表显示了我想要实现的目标:

-------------------------------------------------------
|                                                     |
|                        Panel 1                      |
|                                                     |
-------------------------------------------------------
--------------------------- ---------------------------
|                         | |                         |
|         Panel 2         | |          Panel 3        |
|                         | |                         |
--------------------------- ---------------------------

我想要实现的关键是让Panel 1分布在另外两个面板上。我似乎已经实现了这种布局,但是我遇到了一个问题,就是我的图表中没有显示Panel 1的边框。我尝试过使用setSize方法,但似乎没有用。

以下是我用来创建面板的代码(请注意我没有在面板中包含小部件):

    // Create Panel 1
    JPanel panelOne = new JPanel();
    panelone.setSize(600, 50);
    panelOne.setBorder(BorderFactory.createTitledBorder("Panel 1"));
    panelOne.setLayout(new MigLayout());

    // Create Panel 2
    JPanel panelTwo = new JPanel();
    panelTwo.setBorder(BorderFactory.createTitledBorder("Panel 2"));
    panelTwo.setLayout(new MigLayout());

    // Create Panel 3
    JPanel panelThree = new JPanel();
    panelThree.setBorder(BorderFactory.createTitledBorder("Panel 3"));
    panelThree.setLayout(new MigLayout());

    // Add the panels to the main frame
    mainFrame.add(panelOne, "span, wrap, align center");
    mainFrame.add.add(panelTwo);
    mainFrame.add.add(panelThree);

请有人建议一种方法让边框显示在我的图表中吗?

2 个答案:

答案 0 :(得分:4)

试试这个:

mainFrame.getContentPane().setLayout(new MigLayout());
getContentPane().add(panelTwo);
getContentPane().add(panelThree,  "wrap");   // Wrap to next row
getContentPane().add(panelOne, "dock north");

另外,请确保将GUI元素添加到主框架的内容窗格而不是框架本身。

编辑从以下评论中: 您还可以使用new CC.wrap()new CC.dockNorth() 感谢@Andrew Thompson和@Howard提示:)

答案 1 :(得分:4)

panelone.setSize(600, 50);  // from original code

我从未使用过这种布局,但一般来说布局更可能尊重(强制执行)首选尺寸而不是尺寸。