如何将jpanel添加到GridLayout的特定单元格

时间:2015-03-28 20:15:55

标签: java swing jpanel layout-manager grid-layout

在下面的代码中,我创建了一个包含3行和3列的GridLayot,我想要做的是,将jpanel_1添加到 Gridlayout的一个特定单元格,比如网格单元格编号(2,3)。

代码

private void setUpGUI2() {
    // TODO Auto-generated method stub
    jFrame_2 = new JFrame("Border Demo");
    GridLayout gridLayOut = new GridLayout(3,3);
    jFrame_2.setLayout(gridLayOut);

    jPanel_1 = new JPanel(new BorderLayout());
    jPanel_2 = new JPanel(new BorderLayout());

    jPanel_1.setBorder(BorderFactory.createTitledBorder("title"));
    //jPanel_1.setBounds(30, 100, 110, 300);
    jPanel_1.add(jLabel_Hello, BorderLayout.EAST);

    jPanel_2.setBorder(BorderFactory.createLoweredBevelBorder());
    //jPanel_2.setBounds(20, 50, 120, 80);
    jPanel_2.add(jLabel_Hello, BorderLayout.SOUTH);

    //jFrame_2.setBounds(0, 0, 600, 600);
    jFrame_2.add(jPanel_1);//how to add jpanel_1 to a specific cell of Gridlayout defined above
    //jPanel_1.add(jPanel_2);
    jFrame_2.add(jPanel_2);
    jFrame_2.pack();
    jFrame_2.setVisible(true);
}

2 个答案:

答案 0 :(得分:1)

我认为没有机会。您需要逐个添加它们。 frame.add(...); frame.add(...);
我不清楚您理解的结果,但仅使用GridLayout(3, 3)只有2个面板与使用GridLayout(0, 2)相同。
附:查看GridBagLayout - 它对您更有用。

答案 1 :(得分:0)

根据您要执行的操作,您可以将“虚拟”组件(如JLabel)添加到您不想使用的单元格中。如果我没记错的话,GridLayout将以col / row顺序布局

所以你想在第二行的第二列添加一个组件,你必须先添加四个JLabel,然后填充布局