JPanel Instanz in einen JPanel laden ?

mkoeni1

Erfahrenes Mitglied
Hallo,

ich habe fogendes Problem:
ich möchte mit einem Klick auf einen Button eine Instanz von einem JPanel in ein JFrame laden und dadurch einen JPanel ersetzen.

Geht das:

Zuvor hatte ich das mit einem JScrollPane in den ich einen JPanel aufgerufen hatte.

Code:
private void btnumfrageanfordernMouseClicked(java.awt.event.MouseEvent evt) {
....

 try{
      mainPanel.setViewportView(questionPanel);
      questionPanel.setVisible(true);
    } catch (Exception e){
      mainPanel.setViewportView(null);
    }

......
}

In der API habe ich nichts gefunden. Hat schon mal einer sowas gemacht in der letzen Zeit ?


die JPanels liegen einem JFrame zugrunde (BorderLayout). Ich möchte jetzt das Zentrum (center JPanel) mit einem neuen JPanel nach Klick auf einen Button ersetzen.
Gruß
M
 
Zuletzt bearbeitet:
Hi !

Ich würde sowas in der Art machen :

Java:
frame.remove(mainPanel); 
frame.add(questionPanel);

Gruss,
Krösi
 
Hi,

ist ganz einfach
Java:
frame.removeAll();
frame.add(newPanel);
frame.validate();
frame.repaint();
so müßte das auf jedenfall funktionieren
 
Hallo Leute, das funktioniert so nicht. Ich habe jetzt mal in der Methode ( void jbtnloginMouseClicked() {...} ) der Klasse LoginMain.java folgendes programmiert:

Hinweis: Ein Objekt der Klasse MainPanel wird zuvor in der Klasse ClientMainFrame.java aufgerufen.

Vorgehensweise der Anwendung:
ClientMainFrame -> ClientMainFrame +(LoginMain) -> ClientMainFrame +(Questions) (hier ist mein Problem, ich bekomme keinen Wechsel nach Klick auf einen Button von LoginMain nach Questions innerhalb der Klasse ClientMainFrame, unabhängig jetzt mal auf User und PW Überprüfung !!)

Code:
 private void jbtnloginMouseClicked(java.awt.event.MouseEvent evt) {                                       
// TODO add your handling code here:
     ClientMainFrame cmfl = new ClientMainFrame();
      cmfl.setVisible(true);  legt eine komplett neue Instanz der Anwendung an */ 
}

Das will ich ja soo aber nicht haben,dass da eine neue Anwendung gestartet wird. Ich möchte das bestehende Objekt der Klasse ClientMainFrame() weiterhin offen halten und benutzen und einen Wechsel der Zentrum der Anwendung (JFrame -> BroderLayout -> Center -> JScrollPane) vornehmen. Dort möchte ich eine neues Objekt der Klasse Questions einfügen, aber alles immernoch innerhalb der Klasse ClientMainFrame.


Weiterer Hinweis:
In der Klasse ClientMainFrame gibt es eine Main-Methode mit folgendem Code:
Code:
 public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
        new ClientMainFrame().setVisible(true);
      }
    });
  }
Klar, das da eine neue Anwendung aufgeht (wie ich es weiter oben schon erwähnt hatte).

Kann mir da Jemand eine Hilfestellung geben. Da hänge ich jetzt schon seit 3 Tagen davor.

Vielen Dank
M
 
Zurück