parent
f9969008c3
commit
34aa21bfd9
@ -1,112 +0,0 @@ |
||||
package jme3test.awt; |
||||
|
||||
import com.jme3.app.SimpleApplication; |
||||
import com.jme3.material.Material; |
||||
import com.jme3.math.Vector3f; |
||||
import com.jme3.scene.Geometry; |
||||
import com.jme3.scene.shape.Box; |
||||
import com.jme3.system.AppSettings; |
||||
import com.jme3.system.awt.AwtPanel; |
||||
import com.jme3.system.awt.AwtPanelsContext; |
||||
import com.jme3.system.awt.PaintMode; |
||||
import java.awt.BorderLayout; |
||||
import java.awt.Dimension; |
||||
import java.awt.Toolkit; |
||||
import java.awt.event.WindowAdapter; |
||||
import java.awt.event.WindowEvent; |
||||
import java.util.concurrent.CountDownLatch; |
||||
import java.util.logging.Level; |
||||
import java.util.logging.Logger; |
||||
import javax.swing.JFrame; |
||||
import javax.swing.SwingUtilities; |
||||
|
||||
public class TestAwtPanels extends SimpleApplication { |
||||
|
||||
final private static CountDownLatch panelsAreReady = new CountDownLatch(1); |
||||
private static TestAwtPanels app; |
||||
private static AwtPanel panel, panel2; |
||||
private static int panelsClosed = 0; |
||||
|
||||
private static void createWindowForPanel(AwtPanel panel, int location){ |
||||
JFrame frame = new JFrame("Render Display " + location); |
||||
frame.getContentPane().setLayout(new BorderLayout()); |
||||
frame.getContentPane().add(panel, BorderLayout.CENTER); |
||||
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); |
||||
frame.addWindowListener(new WindowAdapter() { |
||||
@Override |
||||
public void windowClosed(WindowEvent e) { |
||||
if (++panelsClosed == 2){ |
||||
app.stop(); |
||||
} |
||||
} |
||||
}); |
||||
frame.pack(); |
||||
frame.setLocation(location, Toolkit.getDefaultToolkit().getScreenSize().height - 400); |
||||
frame.setVisible(true); |
||||
} |
||||
|
||||
public static void main(String[] args){ |
||||
Logger.getLogger("com.jme3").setLevel(Level.WARNING); |
||||
|
||||
app = new TestAwtPanels(); |
||||
app.setShowSettings(false); |
||||
AppSettings settings = new AppSettings(true); |
||||
settings.setCustomRenderer(AwtPanelsContext.class); |
||||
settings.setFrameRate(60); |
||||
app.setSettings(settings); |
||||
app.start(); |
||||
|
||||
SwingUtilities.invokeLater(new Runnable(){ |
||||
public void run(){ |
||||
/* |
||||
* Sleep 2 seconds to ensure there's no race condition. |
||||
* The sleep is not required for correctness. |
||||
*/ |
||||
try { |
||||
Thread.sleep(2000); |
||||
} catch (InterruptedException exception) { |
||||
return; |
||||
} |
||||
|
||||
final AwtPanelsContext ctx = (AwtPanelsContext) app.getContext(); |
||||
panel = ctx.createPanel(PaintMode.Accelerated); |
||||
panel.setPreferredSize(new Dimension(400, 300)); |
||||
ctx.setInputSource(panel); |
||||
|
||||
panel2 = ctx.createPanel(PaintMode.Accelerated); |
||||
panel2.setPreferredSize(new Dimension(400, 300)); |
||||
|
||||
createWindowForPanel(panel, 300); |
||||
createWindowForPanel(panel2, 700); |
||||
/* |
||||
* Both panels are ready. |
||||
*/ |
||||
panelsAreReady.countDown(); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
@Override |
||||
public void simpleInitApp() { |
||||
flyCam.setDragToRotate(true); |
||||
|
||||
Box b = new Box(Vector3f.ZERO, 1, 1, 1); |
||||
Geometry geom = new Geometry("Box", b); |
||||
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); |
||||
mat.setTexture("ColorMap", assetManager.loadTexture("Interface/Logo/Monkey.jpg")); |
||||
geom.setMaterial(mat); |
||||
rootNode.attachChild(geom); |
||||
/* |
||||
* Wait until both AWT panels are ready. |
||||
*/ |
||||
try { |
||||
panelsAreReady.await(); |
||||
} catch (InterruptedException exception) { |
||||
throw new RuntimeException("Interrupted while waiting for panels", exception); |
||||
} |
||||
|
||||
panel.attachTo(true, viewPort); |
||||
guiViewPort.setClearFlags(true, true, true); |
||||
panel2.attachTo(false, guiViewPort); |
||||
} |
||||
} |
Loading…
Reference in new issue