Hallo,
ich habe zwei JFrames, eines davon hat viele sich ändernde/bewegende Elemente, deshalb hab ich dafür eine Klasse "Render" erstellt, die von Thread erbt und das Fenster pro Sekunde mehrmals aufbaut (Ist das schlau? - hab ich auf einer anderen Website so gelesen.).
Ich möchte nun dass man per Tastendruck von dem einen zum anderen JFrame wechseln kann, allerdings sollen die JFrames dabei neu aufgebaut werden und nicht einfach visible=0 werden.
Hab schon einiges ausprobiert und nichts hat funktioniert, hab letzendlich dann zwei Methoden in der Render-Klasse gemacht, die für die jeweiligen JFrames zuständig sind. Das ganze funktioniert jetzt zwar, allerdings wird das eine JFrame (JFrame1) zwar aufgebaut (Das ist momentan nur zum testen ausschließlich Text auf ner Hintergrundfarbe), aber zeigt nur den Text ohne Hintergrund an. Außerdem verhält sich das Ganze allgemein eigenartig (Bsp: Fügt man nur Thread.sleep(40L) ein funktioniert es gar nicht mehr).
Hier jetzt erstmal der Code:
Das jframe2.isMenuAlreadyOpen() kann ignoriert werden. Die öffentlichen Variablen toJFrame2 und backToJFrame1 werden immer dann verändert wenn ne Taste gedrückt wird. Sorry, dass das ganze sehr unübersichtlich ist, das liegt daran dass ich schon einige Zeit daran am rumprobieren bin ^^.
Während ich das hier geschrieben habe ist mir die Idee gekommen, zwischen zwei Threads statt zwischen zwei JFrames zu wechseln, ist das schon die richtige Lösung?
Danke an alle die es auf sich genommen haben, das Chaos da zu durchblicken und schon mal Danke für die Antworten.
lg, keytie
Edit:
renderScreen und updateScreen sind im Endeffekt eine bessere repaint-Methode.
ich habe zwei JFrames, eines davon hat viele sich ändernde/bewegende Elemente, deshalb hab ich dafür eine Klasse "Render" erstellt, die von Thread erbt und das Fenster pro Sekunde mehrmals aufbaut (Ist das schlau? - hab ich auf einer anderen Website so gelesen.).
Ich möchte nun dass man per Tastendruck von dem einen zum anderen JFrame wechseln kann, allerdings sollen die JFrames dabei neu aufgebaut werden und nicht einfach visible=0 werden.
Hab schon einiges ausprobiert und nichts hat funktioniert, hab letzendlich dann zwei Methoden in der Render-Klasse gemacht, die für die jeweiligen JFrames zuständig sind. Das ganze funktioniert jetzt zwar, allerdings wird das eine JFrame (JFrame1) zwar aufgebaut (Das ist momentan nur zum testen ausschließlich Text auf ner Hintergrundfarbe), aber zeigt nur den Text ohne Hintergrund an. Außerdem verhält sich das Ganze allgemein eigenartig (Bsp: Fügt man nur Thread.sleep(40L) ein funktioniert es gar nicht mehr).
Hier jetzt erstmal der Code:
Java:
public class Render extends Thread{
private JFrame2 jframe2;
public void run(){
JFrame1 jframe1 = new JFrame1();
while(true){
if(jframe1.toJFrame2){
jframe1.dispose();
jframe1 = null;
jframe2 = new JFrame2();
if(this.run2()){
jframe2 = null;
jframe1 = new JFrame1();
try
{
Thread.sleep(400L);
}
catch (InterruptedException ex) {}
}
}
try
{
Thread.sleep(40L);
}
catch (InterruptedException ex) {}
}
}
private boolean run2(){
while(!jframe2.backToJFrame1){
jframe2.renderScreen();
if(jframe2.isMenuAlreadyOpen() == false)
jframe2.updateScreen();
try
{
Thread.sleep(20L);
}
catch (InterruptedException ex) {}
}
jframe2.dispose();
return true;
}
}
Das jframe2.isMenuAlreadyOpen() kann ignoriert werden. Die öffentlichen Variablen toJFrame2 und backToJFrame1 werden immer dann verändert wenn ne Taste gedrückt wird. Sorry, dass das ganze sehr unübersichtlich ist, das liegt daran dass ich schon einige Zeit daran am rumprobieren bin ^^.
Während ich das hier geschrieben habe ist mir die Idee gekommen, zwischen zwei Threads statt zwischen zwei JFrames zu wechseln, ist das schon die richtige Lösung?
Danke an alle die es auf sich genommen haben, das Chaos da zu durchblicken und schon mal Danke für die Antworten.
lg, keytie
Edit:
renderScreen und updateScreen sind im Endeffekt eine bessere repaint-Methode.
Zuletzt bearbeitet von einem Moderator: