JPanel数组只显示数组中的最后一个面板

时间:2011-12-30 08:33:34

标签: java swing jpanel jlabel

我创建了一个包含常见JLabel

的JPanel数组
class gui 
{

    JPanel[] multpanel;
    JPanel finalPane = new JPanel();
    JLabel InputLabel = new JLabel("Input Files");
    
    gui()
    {
        InputLabel.setLocation(50,50);
        InputLabel.setSize(120,20);
        int total_instances=2;
        multpanel=new JPanel[total_instances];

        for(int instance=0;instance<total_instances;instance++)
        {
            multpanel[instance]=new JPanel();
            multpanel[instance].setLocation(10,0);
            multpanel[instance].setSize(500,500);
            multpanel[instance].setLayout(null);
            multpanel[instance].add(InputLabel);
        }

        finalPane.add(multpanel[0]);
        finalPane.add(multpanel[1]);
        JFrame.setDefaultLookAndFeelDecorated(true);
        frame.getContentPane().add(finalPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,800);
        frame.setVisible(true);
    }

这是我的程序的简短版本,我创建了一组面板,并且一次只能看到一个面板 我的问题是它只显示数组中的最后一个面板,在我的情况下显示第二个数组面板,当我尝试显示第一个面板时它什么也没显示

就像我有大小为5的面板数组一样,只显示第5个面板,所有其他面板显示空白

这是因为我在其中添加了一个通用标签

请帮忙

2 个答案:

答案 0 :(得分:2)

给定组件可能只有一个祖先。因此,当您向面板添加标签时,您可以有效地将其从前一个标签中删除。如果您想要5个面板中的标签,则需要5个标签。

另外两个注意事项:

  • 你应该学习Java命名约定并坚持下去。变量以小写字母和带大写字母的类开头。
  • 你应该学会使用布局管理器。这是布置组件的正确方法。不要将布局设置为null。

答案 1 :(得分:2)

使用正确的LayoutManager,例如BoxLayout并且不设置面板的大小和位置。 setLayout(null);&lt; - 不会建议使用它。