В массиве JPanel отображается только последняя панель в массиве - PullRequest
0 голосов
/ 30 декабря 2011

Я создал массив JPanels, который содержит общий JLabel

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-я панель и вседругие панели отображаются пустыми

Это потому, что я добавляю в него общую метку

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Используйте правильный LayoutManager, например. BoxLayout и не устанавливайте размер и расположение панелей. setLayout(null); <- не рекомендую использовать это. </p>

2 голосов
/ 30 декабря 2011

Данный компонент может иметь только одного предка.Таким образом, когда вы добавляете ярлык на панель, вы фактически удаляете его из предыдущего.Если вам нужна метка на 5 панелях, вам нужно 5 меток.

Два дополнительных примечания:

  • Вы должны изучить соглашения об именах Java и придерживаться их.Переменные начинаются с буквы в нижнем регистре, а классы - с буквы в верхнем регистре.
  • Вы должны научиться пользоваться менеджерами компоновки.Это правильный способ размещения компонентов.Не устанавливайте макет на ноль.
...