首页 > 解决方案 > 如何在mig布局中进行组件定位

问题描述

红色方块中的坏部分:

https://i.stack.imgur.com/yBjtp.png

问题是我怎样才能使每个面板都具有相同的尺寸,只有 B3 和 B4 需要是其他面板的一半。有人能帮我吗?如果我设置尺寸

如果我强制窗格大小会发生这种情况,我将在 B4 旁边有这个间隙:

https://i.stack.imgur.com/9CpGn.png

for(int i = 0; i < 60; i++) { //this is the for cycle

 if (i == 0){
            panel.add(pane,"wrap,cell 0 0 14 0,right"); // creating the first //panel the time panel in the right corner

        }
        if (i == 58){
            panel.add(pane,"cell 0 9 1 0,left");
        }
        if (i == 59){
            panel.add(pane,"cell 1 9 14 1,left,span");
        }

        if (i>0 & i<3){
            panel.add(pane, " push,grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span,push, grow");
        }
        if (i==3){
            panel.add(pane, " push,grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span ,push, grow");
        }
        if (i>3 & i<7){
            panel.add(pane, " push,grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span,push, grow");
        }
        if (i==7){
            panel.add(pane,"wrap 3, push, grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span ,push, grow");

        }

        if (i>7 & i<10){
            panel.add(pane, "push , grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span,push, grow");
        }  
                    if (i==10){
                        panel.add(pane, "push , grow,split 2, w 0, h 0, , "  ); // split it to two this is what dosn't works
                        pane.setBackground(Color.yellow);
                        pane.add(button, "span,push, grow");
                    }
                    if (i==11){
                        panel.add(pane, "push ,grow,");
                        pane.setBackground(Color.yellow);
                        pane.add(button, "span,push, grow");
                    }
        if (i>11 & i<15){
            panel.add(pane, "push , grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span,push, grow");
        } 
        if (i==15){
            panel.add(pane,"wrap 3, push, grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span,push, grow");
        }
        if (i>15 & i<22){
            panel.add(pane, "push , grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span ,push, grow");
        }
        if (i==22){
            panel.add(pane,"wrap 3, push, grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span ,push, grow");
        }
        if (i>22 & i<29){
            panel.add(pane, "push , grow");
            pane.setBackground(Color.yellow);
            pane.add(button, "span ,wrap 3,push, grow");
        }

其中 i=10 和 i=11 是 B3 B4 面板,我尝试使用拆分功能但不起作用。

标签: javamiglayout

解决方案


split [count] 将单元格拆分为多个子单元格。实际上,这意味着下一个计数组件将被放置在同一个单元格中,彼此相邻而没有间隙。只有单元格中的第一个组件可以设置拆分,单元格中的任何后续拆分关键字都将被忽略。 "split""wrap" 或 "newline"将脱离拆分单元格。后两者将照常移动到新的行/列。

所以删除额外的参数,这会破坏正确的拆分功能。

拆分单元格同样简单直观。

panel.add(comp1);
panel.add(comp2, "split 2"); // Split the cell in two
panel.add(comp3); // Will be in same cell as previous
panel.add(comp4, "wrap"); // Wrap to next row
panel.add(comp5);

在视觉上它看起来像这样:

在此处输入图像描述


推荐阅读