Swing: setContentPane не обновляет интерфейс при вызове - PullRequest
1 голос
/ 13 декабря 2010

У меня проблема с моим апплетом: он не обновляется, когда мне это нужно.

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

У меня есть

public class PixelRainEditorApp extends JApplet

и в инициале

SwingUtilities.invokeAndWait(new Runnable() {
    public void run() {
        createGUI();
    }
});
private void createGUI() {
    a = new A(this);
    this.setSize(800, 480);
}

Тогда у меня есть 2 класса A и B, которые расширяют JPanel

public A(JApplet parent) {
   super(parent);
   setOpaque(true);
   setBackground(Color.BLACK);
   this.parent.setContentPane(this);
}

когда я нажимаю на кнопку в представлении A

@Override
public void actionPerformed(ActionEvent e) {
   if(TAG.equalsIgnoreCase(e.getActionCommand())){
      new B(this.baseParent);
   }
}

и B такие же, как A, но с разными изображениями

public B(JApplet parent) {
       super(parent);
       setOpaque(true);
       setBackground(Color.BLACK);
       this.parent.setContentPane(this);
    }

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

Есть идеи?

Jason

1 Ответ

5 голосов
/ 13 декабря 2010

Просто добавьте this.parent.revalidate ();this.parent.repaint ();в конце разговора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...