package com.badlogic.gdx.tests.lwjgl3; import java.awt.EventQueue; import java.awt.Toolkit; import java.awt.image.BufferedImage; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.SwingUtilities; import org.lwjgl.glfw.GLFWKeyCallback; import org.lwjgl.glfw.GLFWMouseButtonCallback; import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL11; import org.lwjgl.system.Configuration; import static org.lwjgl.glfw.GLFW.*; public class AwtTestLWJGL { static GLFWMouseButtonCallback callback = new GLFWMouseButtonCallback() { @Override public void invoke (long window, int button, int action, int mods) { if (action == GLFW_PRESS) { System.out.println("Bam"); SwingUtilities.invokeLater(new Runnable() { @Override public void run () { final JFileChooser fc = new JFileChooser(); fc.showOpenDialog(null); } }); } } }; public static void main (String[] args) throws Exception { EventQueue.invokeLater(new Runnable() { public void run () { Toolkit.getDefaultToolkit(); new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB); if (!glfwInit()) { System.out.println("Couldn't initialize GLFW"); System.exit(-1); } final long window = glfwCreateWindow(640, 480, "Test", 0, 0); if (window == 0) { throw new RuntimeException("Couldn't create window"); } glfwMakeContextCurrent(window); glfwSwapInterval(0); glfwSetMouseButtonCallback(window, callback); new Runnable() { public void run () { if (glfwWindowShouldClose(window)) { glfwDestroyWindow(window); glfwTerminate(); return; } GL.createCapabilities(); GL11.glViewport(0, 0, 640, 480); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); GL11.glRotatef(0.1f, 0, 0, 1); GL11.glBegin(GL11.GL_TRIANGLES); GL11.glVertex2f(-0.5f, -0.5f); GL11.glVertex2f(0.5f, -0.5f); GL11.glVertex2f(0, 0.5f); GL11.glEnd(); glfwPollEvents(); glfwSwapBuffers(window); EventQueue.invokeLater(this); } }.run(); } }); } }