Hallo,
Ich habe mir ein JApplet programmiert, in welchem ein JFrame (GUI) aufgerufen wird.
Das GUI hat ein CardLayout und wechselt zwischen zwei verschiedenen JPanels (Game und Home).
Beim Wechsel rufe ich invalidate() und repaint() auf. Dasselbe beim updaten von Komponenten (wie Bilder, etc.)
Wenn ich das JApplet unter Eclipse als Applikation laufen lasse, funktioniert alles wunderbar und
alle Komponenten (Bilder, Buttons, etc.) werden korrekt dargestellt.
Wenn ich es aber als JApplet laufen lasse, dann muss ich das GUI immer vergrössern/-kleinern, damit
es neu gezeichnet wird.
Hier den Code für das Applet:
Hier den Code für das GUI:
Was mache ich falsch?
MfG HeroicGlaedr
Ich habe mir ein JApplet programmiert, in welchem ein JFrame (GUI) aufgerufen wird.
Das GUI hat ein CardLayout und wechselt zwischen zwei verschiedenen JPanels (Game und Home).
Beim Wechsel rufe ich invalidate() und repaint() auf. Dasselbe beim updaten von Komponenten (wie Bilder, etc.)
Wenn ich das JApplet unter Eclipse als Applikation laufen lasse, funktioniert alles wunderbar und
alle Komponenten (Bilder, Buttons, etc.) werden korrekt dargestellt.
Wenn ich es aber als JApplet laufen lasse, dann muss ich das GUI immer vergrössern/-kleinern, damit
es neu gezeichnet wird.
Hier den Code für das Applet:
Java:
public class MtGApplet extends JApplet {
private static final long serialVersionUID = 855191779156553609L;
/** Initializes the MtGApplet */
@Override
public void init() {
try {
ImageLoader.getInstance().setApp(this);
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
new GUI (1055, 850);
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args){
MtGApplet app = new MtGApplet();
app.init();
}
}
Java:
public class GUI extends JFrame{
private static final long serialVersionUID = -4156161136650580297L;
public static void main(String[] args) {
new GUI (1055, 837);
}
private final String GAMEPANEL = "Game";
private final String HOMEPANEL = "Home";
private JPanelGame game;
private JPanelHome home;
private JPanel cards;
private GameClient client;
public GUI(int w, int h){
this.setPreferredSize(new Dimension(w,h));
game=new JPanelGame(this);
home=new JPanelHome(this);
client = new GameClient(this);
/** CardLayout um zwischen verschiedenen Panels zu wechseln **/
CardLayout cl = new CardLayout();
cards = new JPanel(cl);
cards.add(home,HOMEPANEL);
cards.add(game,GAMEPANEL);
cl.show(cards,HOMEPANEL);
this.add(cards);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/** Signal Spielstart **/
public void gameStart(int i) {
try{game.setUID(client.getUID());}
catch(RemoteException e){e.printStackTrace();}
showGamePanel();
game.gameStartUpdate(i);
}
public GameClient getClient(){
return client;
}
/** MVC Komponenten initialisieren **/
public void initMVC(RemoteObservable[] obs) {
game.initMVC(obs);
}
public void setClient(GameClient client) {
this.client = client;
}
/** Zum Gamepanel wechseln **/
public void showGamePanel(){
((CardLayout) cards.getLayout()).show(cards,GAMEPANEL);
invalidate();
repaint();
}
/** Zum Homepanel wechseln **/
public void showHomePanel(){
((CardLayout) cards.getLayout()).show(cards,HOMEPANEL);
invalidate();
repaint();
}
}
Was mache ich falsch?
MfG HeroicGlaedr