JPanel布局未按预期呈现

时间:2012-12-02 23:14:58

标签: java swing jpanel layout-manager

我的代码如下。我希望网格中有2个标签,标签位于彼此之上,2个下拉列表具有相同的内容。我想要两套这些。 我得到的只是彼此相邻的两个标签和彼此相邻的2个下拉列表,并且前两个标签和下拉列表没有出现在所有下拉列表中的是大写的。没有错误。

JPanel grid1 = new JPanel();
            setLayout(new GridLayout(2,1));            
            grid1.add(label1);
            grid1.add(label2);
            add(grid1);
        JPanel grid3 = new JPanel();
            setLayout(new GridLayout(2,1));            
            grid3.add(IHA);
            grid3.add(IVA);
            add(grid3);
        JPanel controlholder1 = new JPanel();
            setLayout(new BorderLayout());
            controlholder1.add(grid1);
            controlholder1.add(grid3);
            add(controlholder1);


        JPanel grid2 = new JPanel();
            setLayout(new GridLayout(2,1));            
            grid2.add(label3);
            grid2.add(label4);
            add(grid2);
        JPanel grid4 = new JPanel();
            setLayout(new GridLayout(2,1));            
            grid4.add(THA);
            grid4.add(TVA);
            add(grid4);     
        JPanel controlholder2 = new JPanel();       
            setLayout(new BorderLayout());
            controlholder2.add(grid2);     
            controlholder2.add(grid4);
            add(controlholder2);

感谢The Output

编辑:我在网格布局中有2个标签,而在另一个网格中有2个下拉列表。我希望这两个都在边框布局中,我需要在另一个边框布局中使用其中2个边框布局。有嵌套的东西,我没有处理。

2 个答案:

答案 0 :(得分:1)

使用BorderLayout

在BorderLayout.NORTH中添加一个标签和一个列表,在BorderLayout.SOUTH中添加另外两个

答案 1 :(得分:1)

我会这样做;

public JPanel getSubPanels(stuff_to_add_to_dropdowns, stuff_to_add_to_labels){
    JPanel subPanel = new JPanel();
    subPanel.setLayout(new GridLayout(2,2));
    subPanel.add(new JLabel(stuff_to_add_to_labels.get(0));
    subPanel.add(new JComboBox(stuff_to_add_to_dropdowns.get(0);
    subPanel.add(new JLabel(stuff_to_add_to_labels.get(1));
    subPanel.add(new JComboBox(stuff_to_add_to_dropdowns.get(1);
    return subPanel;
}

并调用它两次将它添加到BorderLayout.NORTH和BorderLayout.SOUTH到父JPanel