{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigflfthyi3tuslfmyqq4lexkv6woplyxd3gv3ocikuftgyt25hblm",
"uri": "at://did:plc:dxjzgxe7cvirxkwfjr2tjspt/app.bsky.feed.post/3mmzfw5jgdbs2"
},
"path": "/t/swing-jframe-can-not-initialize/49594?page=2#post_25",
"publishedAt": "2026-05-29T19:38:27.000Z",
"site": "https://hub.jmonkeyengine.org",
"tags": [
"3.10.0-alpha5",
"lwjgl3-awt",
"@Override"
],
"textContent": "I think this is a good opportunity to test lwjglx-awt’s compatibility with jme on macOS, as I’m only certain that the awt backend works on Linux (x11/XWayland) and Windows.\n\nTherefore, I would like to ask the following question:\n\n 1. How did you integrate JME3 with AWT?\n 2. Does the JVM fail when running JME3 with LWJGL3 using AWT (break)?\n 3. Does the canvas remain blank?\n 4. Does the screen or canvas reach a point where it turns black?\n 5. Is AWT frozen (not allowing interaction)?\n 6. What logs does JME3 generate? (**very important**)\n 7. Have you tried version 3.10.0-alpha5? That version improved the integration of lwjgl3 (lwjgl3-awt) with awt.\n\n\n\nBecause if you use lwjgl3, jme3 uses lwjgl3-awt as a means to create the GL context.\n\nTo isolate the problem, ideally you would test jme3 with awt using a simple example, and lwjgl3-awt in an isolated environment, to determine where the problem lies (whether it is in jme3 or in lwjgl3-awt).\n\n* * *\n\nFor example (JME3 - lwjgl3):\n\n\n import com.jme3.app.SimpleApplication;\n import com.jme3.material.Material;\n import com.jme3.math.ColorRGBA;\n import com.jme3.math.Quaternion;\n import com.jme3.math.Vector3f;\n import com.jme3.scene.Geometry;\n import com.jme3.scene.shape.Box;\n import com.jme3.system.AppSettings;\n import com.jme3.system.JmeCanvasContext;\n\n import javax.swing.*;\n import java.awt.*;\n import java.awt.event.KeyEvent;\n import java.awt.event.WindowAdapter;\n import java.awt.event.WindowEvent;\n\n public class SimpleAWT extends SimpleApplication {\n\n public static void main(String[] args) {\n SimpleAWT app = new SimpleAWT();\n\n AppSettings settings = new AppSettings(true);\n settings.setTitle(\"AWT - Simple\");\n settings.setRenderer(AppSettings.LWJGL_OPENGL45);\n\n\n app.setSettings(settings);\n app.createCanvas();\n app.startCanvas();\n\n JmeCanvasContext ctx = (JmeCanvasContext) app.getContext();\n Canvas canvas = ctx.getCanvas();\n\n final JFrame window = new JFrame();\n window.setTitle(\"OpenGL Triangle\");\n window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);\n window.setLayout(new BorderLayout());\n window.setPreferredSize(new Dimension(640, 480));\n\n window.addWindowListener(new WindowAdapter() {\n @Override\n public void windowClosed(WindowEvent e) {\n app.stop();\n }\n });\n\n window.add(canvas);\n window.pack();\n\n KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(e -> {\n if (e.getKeyCode() == KeyEvent.VK_ESCAPE && e.getID() == KeyEvent.KEY_PRESSED) {\n window.dispose();\n return true;\n }\n return false;\n });\n\n EventQueue.invokeLater(() -> {\n window.setVisible(true);\n });\n }\n\n private Geometry geom;\n\n @Override\n public void simpleInitApp() {\n flyCam.setEnabled(false);\n\n Box b = new Box(1, 1, 1);\n geom = new Geometry(\"Box\", b);\n\n Material mat = new Material(assetManager, \"Common/MatDefs/Misc/Unshaded.j3md\");\n mat.setColor(\"Color\", ColorRGBA.Blue);\n geom.setMaterial(mat);\n\n rootNode.attachChild(geom);\n\n }\n\n @Override\n public void simpleUpdate(float tpf) {\n geom.rotate(new Quaternion().fromAngleAxis(0.6f * tpf, Vector3f.UNIT_XYZ));\n }\n }\n\n\nWhen you run it, it should generate messages:\n\n\n may 29, 2026 1:50:10 P.�M. com.jme3.system.JmeDesktopSystem initialize\n INFORMACI�N: Running on jMonkeyEngine 3.10.0-SNAPSHOT\n * Branch: master\n * Git Hash: b00c824\n * Build Date: 2026-05-29\n ...\n may 29, 2026 1:50:11 P.�M. com.jme3.system.lwjgl.LwjglCanvas createContext\n ADVERTENCIA: LWJGLX and AWT/Swing only work with X11, so XWayland will be used for GLX.\n may 29, 2026 1:50:11 P.�M. com.jme3.system.lwjgl.LwjglContext printContextInitInfo\n INFORMACI�N: LWJGL 3.4.1+2 context running on thread jME3 Main\n * Video backend: AWT|Swing (LWJGLX) GLv4.5 Linux (XWayland|X11) GLX\n may 29, 2026 1:50:11 P.�M. com.jme3.system.lwjgl.LwjglCanvas printContextInitInfo\n INFORMACI�N: Initializing LWJGL3-AWT with jMonkeyEngine\n * Double Buffer: true\n * Stereo: false\n * Red Size: 8\n * Green Size: 8\n * Blue Size: 8\n * Alpha Size: 0\n * Depth Size: 24\n * Stencil Size: 0\n * Accum Red Size: 0\n * Accum Green Size: 0\n * Accum Blue Size: 0\n * Accum Alpha Size: 0\n * Sample Buffers: 0\n * Share Context: null\n * Major Version: 4\n * Minor Version: 5\n * Forward Compatible: false\n * Profile: COMPATIBILITY\n * API: GL\n * Debug: false\n * Swap Interval: 1\n * SRGB (Gamma Correction): true\n * Pixel Format Float: false\n * Context Release Behavior: null\n * Color Samples NV: 0\n * Swap Group NV: 0\n * Swap Barrier NV: 0\n * Robustness: false\n * Lose Context On Reset: false\n * Context Reset Isolation: false\n ...\n\n\nIf the JVM fails, it typically generates a .log file containing information that can help determine where the corruption occurred (for example, a native - JNI call).",
"title": "Swing(jFrame) can not initialize"
}