Код: Выделить всё
GLCanvas glCanvas = new GLCanvas();
glCanvas.setSize(size-10, size-10);
glCanvas.addGLEventListener(new GLEventListener() {
private final long t0 = System.currentTimeMillis();
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}
@Override
public void init(GLAutoDrawable drawable) {
new Thread(() -> {while (true) glCanvas.display();}).start();
}
@Override
public void dispose(GLAutoDrawable drawable) {}
@Override
public void display(GLAutoDrawable drawable) {
GL4 gl = drawable.getGL().getGL4();
float t = (float)(Math.sin((System.currentTimeMillis()-t0)/1000f)+1)/2f;
gl.glClearColor(t, 1-t, 0, 1);
gl.glClear(GL4.GL_COLOR_BUFFER_BIT);
}
});
GLJPanel glPanel = new GLJPanel();
glPanel.add(glCanvas);
glPanel.setBackground(Color.BLUE);
< /code>
Альтернативный Hello World (без движения, это ясно работает): < /p>
Canvas awtCanvas = new Canvas() {
@Override
public void paint(Graphics g) {g.fillRect(0, 0, getWidth(), getHeight());}
};
awtCanvas.setSize(size-10, size-10);
JPanel swingPanel = new JPanel();
swingPanel.add(awtCanvas);
swingPanel.setBackground(Color.BLUE);
< /code>
и тестовый код Сопровожение вещи вместе: < /p>
if (jfx) {
SwingNode swingNode = new SwingNode();
swingNode.setContent(swingPanel);
primaryStage.setScene(new Scene(new Group(swingNode), size, size+30));
primaryStage.show();
} else {
JFrame frame = new JFrame();
frame.setSize(size, size+30);
frame.add(swingPanel);
frame.setVisible(true);
}
Когда я пробую не Jogl warpper stage (сцена (группа (jpanel (canvas ()))) < /em>, работает как ожидалось (JFX работает). < /p>
stage (сцена (группа (jpanel (gljpanel (glcanvas ()))) производит черное, где должно быть содержание холста. />
Единственные упоминания, которые я обнаружил в Интернете, - это с 2012/2013, где, кажется, он не работает (но, кажется, также не существует в то время Swingnod>
Подробнее здесь: https://stackoverflow.com/questions/527 ... -in-javafx