JFrame перезагружает исходный контент при наведении мыши - PullRequest
1 голос
/ 14 марта 2012

У меня есть JPanel с GridLayout(1,0), установленным на JFrame Borderlayout.SOUTH, здесь размещена пара кнопок (при нажатии они изменяют значение переменной на индекс созданной кнопки).

Все добавлено правильно, но когда я пытаюсь обновить JPanel, оно сначала работает (только когда окно развернуто).Но затем, когда я нажимаю кнопку (или все кнопки), она возвращается к исходному содержимому панели.

Я пробовал invalidate, validate, repaint, jframe.setvisible(true) - ни один из них, кажется, не работает должным образом.

Есть идеи?

 private void toonHand(){
        JPanel pnlSouth = new JPanel(new GridLayout(1,0));
        JButton[] btnArr =new JButton[50];
        ArrayList<Kaart> Thand=uno.getSpeler(0).getHand();
        for(int i=0;i<Thand.size();i++){
            final int T=i;
            btnArr[i]=new JButton();
            btnArr[i].setIcon(Thand.get(i).getImg());
            btnArr[i].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    iKaart=T;
                }
            });
            pnlSouth.add(btnArr[i]);
        }
        Hoofdvenster.remove(pnlSouth);
        Hoofdvenster.add(pnlSouth, BorderLayout.SOUTH);
    }

1 Ответ

0 голосов
/ 15 марта 2012

Проблема заключалась в том, что я просто удалял панель, менял содержимое и снова добавлял его. Видимо, это давало некоторые проблемы с отображением контента. Я исправил это, поместив панели как глобальные переменные, и разделив создание и обновление панелей. Поэтому в каждом обновлении я удаляю панель, делаю панель новой панелью, а затем делаю ее снова.

...