Mir ist bei deinem Code noch etwas aufgefallen:
Thread runMe= new Thread() {
public void start() {
while (true) {
Graphics g = scene.getGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g = g2;
scene.drawThisScene();
java.awt.Image img = scene.thisscene.getScaledInstance(-1, scene.getHeight(), java.awt.Image.SCALE_FAST);
if (scene.tr == 0) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, scene.getWidth(), scene.getHeight());
g.drawImage(img, (scene.getWidth() - img.getWidth(null)) >> 1, 0, null);
}
frame.setTitle(scene.name);
scene.requestFocus();
try {
Thread.sleep(50);
} catch (Exception e) {
}
}
}
};
runMe.start();
Du versuchst hier einen neuen Thread zu erstellen, aber statt die wirkliche Methode run() dafür zu implementieren, nutzt du die Methode start() --> es wird kein neuer Thread erstellt, sondern vermutlich eher der alte geblockt, da du start() direkt aufrufst. Die Methode start() solltest du wohl eher nicht überschreiben, es sei denn, du weißt, was du tust.
So müsste das eig. aussehen:
//Java 7 style
Thread thread1 = new Thread(new Runnable () {
public void run () {
//add your code here
//this code will be executed in new thread
}
});
//start new thread
thread1.start();
//OR: Java 8 style with lambda
Thread thread1 = new Thread(() -> {
public void run () {
//add your code here
//this code will be executed in new thread
}
});
//start new thread
thread1.start();