Hallo alle zusammen,
ich habe eine JavaFX-Anwendung, welche mit SwingNode Swing-Content darstellen soll. Innerhalb von Swing werden repaint-Aufrufe getätigt. Diese scheinen aber komplett ignoriert, obwohl der Content beim Start gezeichnet wird. Die folgenden beiden Klassen zeigen das Verhalten:
Hofentlich gibts hier nur ne Dummheit von mir...
Grüße
javampir
ich habe eine JavaFX-Anwendung, welche mit SwingNode Swing-Content darstellen soll. Innerhalb von Swing werden repaint-Aufrufe getätigt. Diese scheinen aber komplett ignoriert, obwohl der Content beim Start gezeichnet wird. Die folgenden beiden Klassen zeigen das Verhalten:
Java:
package swingfxtest;
import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javax.swing.SwingUtilities;
public class UI extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
SwingNode sn = new SwingNode();
SwingUtilities.invokeLater(() -> {
PaintPane p = new PaintPane();
sn.setContent(p);
});
StackPane sp = new StackPane();
sp.getChildren().add(sn);
Scene scene = new Scene(sp, 800, 800);
stage.setScene(scene);
stage.show();
}
}
Java:
package swingfxtest;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class PaintPane extends JPanel {
private boolean b = false;
public PaintPane() {
super();
setBackground(Color.red);
new Thread(() -> {
repaint();
try {
Thread.sleep(500);
} catch (InterruptedException ex) {}
}).start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
b = !b;
g.setColor(b ? Color.yellow : Color.green);
g.fillRect(20, 20, 400, 400);
}
}
Hofentlich gibts hier nur ne Dummheit von mir...
Grüße
javampir