aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenCanvas3D.java8
-rw-r--r--src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTest.java2
-rw-r--r--src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTestGL2ES2.java231
-rw-r--r--src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButton.java15
-rw-r--r--src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButtonGL2ES2.java285
5 files changed, 534 insertions, 7 deletions
diff --git a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenCanvas3D.java b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenCanvas3D.java
index 913bc74..bc72301 100644
--- a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenCanvas3D.java
+++ b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenCanvas3D.java
@@ -71,16 +71,16 @@ class OffScreenCanvas3D extends Canvas3D {
printing = true;
BufferedImage bImage = new BufferedImage(
- 200, 200 , BufferedImage.TYPE_INT_ARGB);
+ 200, 200 , BufferedImage.TYPE_3BYTE_BGR);
ImageComponent2D buffer = new ImageComponent2D(
- ImageComponent.FORMAT_RGBA, bImage, true, true);
+ ImageComponent.FORMAT_RGB, bImage, true, true);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
this.setOffScreenBuffer(buffer);
this.renderOffScreenBuffer();
- if (toWait) {
+ if (toWait) {
this.waitForOffScreenRendering();
drawOffScreenBuffer();
}
@@ -99,7 +99,7 @@ class OffScreenCanvas3D extends Canvas3D {
BufferedImage bImage = this.getOffScreenBuffer().getImage();
ImageComponent2D newImageComponent = new ImageComponent2D(
- ImageComponent.FORMAT_RGBA, bImage, true, true);
+ ImageComponent.FORMAT_RGB, bImage, true, true);
drawRaster.setImage(newImageComponent);
}
diff --git a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTest.java b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTest.java
index dbb841e..ecfee83 100644
--- a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTest.java
+++ b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTest.java
@@ -95,7 +95,7 @@ public class OffScreenTest extends javax.swing.JFrame {
//Create a raster
BufferedImage bImage = new BufferedImage(200, 200 ,
- BufferedImage.TYPE_INT_ARGB);
+ BufferedImage.TYPE_4BYTE_ABGR);
ImageComponent2D buffer =
new ImageComponent2D(ImageComponent.FORMAT_RGBA, bImage, true, true);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
diff --git a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTestGL2ES2.java b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTestGL2ES2.java
new file mode 100644
index 0000000..b549781
--- /dev/null
+++ b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/OffScreenTestGL2ES2.java
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2016 JogAmp Community. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+package org.jdesktop.j3d.examples.offscreen_canvas3d;
+
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+
+import org.jogamp.java3d.BranchGroup;
+import org.jogamp.java3d.GraphicsConfigTemplate3D;
+import org.jogamp.java3d.ImageComponent;
+import org.jogamp.java3d.ImageComponent2D;
+import org.jogamp.java3d.Raster;
+import org.jogamp.java3d.Screen3D;
+import org.jogamp.java3d.Shape3D;
+import org.jogamp.java3d.Transform3D;
+import org.jogamp.java3d.TransformGroup;
+import org.jogamp.java3d.View;
+import org.jogamp.java3d.utils.shader.Cube;
+import org.jogamp.java3d.utils.universe.SimpleUniverse;
+import org.jogamp.vecmath.Point3f;
+import org.jogamp.vecmath.Vector3d;
+
+/**
+ * OffScreenTest programs with no UI.
+ */
+public class OffScreenTestGL2ES2 extends javax.swing.JFrame
+{
+
+ private SimpleUniverse univ = null;
+ private BranchGroup scene = null;
+ private Raster drawRaster = null;
+
+ private BranchGroup createSceneGraph()
+ {
+ // Create the root of the branch graph
+ BranchGroup objRoot = new BranchGroup();
+
+ // trans object has composited transformation matrix
+ Transform3D trans = new Transform3D();
+ Transform3D rot = new Transform3D();
+
+ trans.rotX(Math.PI / 4.0d);
+ rot.rotY(Math.PI / 5.0d);
+ trans.mul(rot);
+ trans.setScale(0.7);
+ trans.setTranslation(new Vector3d(-0.4, 0.3, 0.0));
+
+ TransformGroup objTrans = new TransformGroup(trans);
+ objRoot.addChild(objTrans);
+
+ // Create a simple shape leaf node, add it to the scene graph.
+ // ColorCube is a Convenience Utility class
+ objTrans.addChild(new Cube(0.4));
+
+ //Create a raster
+ BufferedImage bImage = new BufferedImage(200, 200, BufferedImage.TYPE_3BYTE_BGR);
+ ImageComponent2D buffer = new ImageComponent2D(ImageComponent.FORMAT_RGB, bImage, true, true);
+ buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
+
+ drawRaster = new Raster(new Point3f(0.0f, 0.0f, 0.0f), Raster.RASTER_COLOR, 0, 0, 200, 200, buffer, null);
+
+ drawRaster.setCapability(Raster.ALLOW_IMAGE_WRITE);
+ Shape3D shape = new Shape3D(drawRaster);
+ objRoot.addChild(shape);
+
+ // Let Java 3D perform optimizations on this scene graph.
+ objRoot.compile();
+
+ return objRoot;
+ }
+
+ private OnScreenCanvas3D createOnScreenCanvasAndUniverse()
+ {
+ // Get the preferred graphics configuration for the default screen
+ GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
+
+ // Create a Canvas3D using the preferred configuration
+ OnScreenCanvas3D onScrCanvas = new OnScreenCanvas3D(config, false);
+
+ // Create simple universe with view branch
+ univ = new SimpleUniverse(onScrCanvas);
+
+ // This will move the ViewPlatform back a bit so the
+ // objects in the scene can be viewed.
+ univ.getViewingPlatform().setNominalViewingTransform();
+
+ // Ensure at least 5 msec per frame (i.e., < 200Hz)
+ univ.getViewer().getView().setMinimumFrameCycleTime(5);
+
+ /*BranchGroup objRoot = new BranchGroup();
+ Transform3D trans = new Transform3D();
+ Transform3D rot = new Transform3D();
+
+ trans.rotX(Math.PI/4.0d);
+ rot.rotY(Math.PI/5.0d);
+ trans.mul(rot);
+ trans.setScale(0.7);
+ trans.setTranslation(new Vector3d(-0.4, 0.3, 0.0));
+
+ TransformGroup objTrans = new TransformGroup(trans);
+ objRoot.addChild(objTrans);
+
+ // Create a simple shape leaf node, add it to the scene graph.
+ // ColorCube is a Convenience Utility class
+ objTrans.addChild(new Cube(0.4));
+
+ univ.addBranchGraph(objRoot);*/
+
+ return onScrCanvas;
+ }
+
+ private OffScreenCanvas3D createOffScreenCanvas()
+ {
+ // request an offscreen Canvas3D with a single buffer configuration
+ GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
+ template.setDoubleBuffer(GraphicsConfigTemplate3D.UNNECESSARY);
+ GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()
+ .getBestConfiguration(template);
+
+ // Create a offscreen Canvas3D using the single buffer configuration.
+ OffScreenCanvas3D offScrCanvas = new OffScreenCanvas3D(gc, true, drawRaster);
+
+ return offScrCanvas;
+ }
+
+ /**
+ * Creates new form OffScreenTest
+ */
+ public OffScreenTestGL2ES2()
+ {
+ // Initialize the GUI components
+ initComponents();
+
+ // Create the content branch and add it to the universe
+ scene = createSceneGraph();
+
+ // Create an OnScreenCanvas3D and SimpleUniverse; add canvas to drawing panel
+ OnScreenCanvas3D onScreenCanvas = createOnScreenCanvasAndUniverse();
+ drawingPanel.add(onScreenCanvas, java.awt.BorderLayout.CENTER);
+
+ // Creante an OffScreenCanvas3D
+ OffScreenCanvas3D offScreenCanvas = createOffScreenCanvas();
+
+ // set the offscreen to match the onscreen
+ Screen3D sOn = onScreenCanvas.getScreen3D();
+ Screen3D sOff = offScreenCanvas.getScreen3D();
+ sOff.setSize(sOn.getSize());
+ sOff.setPhysicalScreenWidth(sOn.getPhysicalScreenWidth());
+ sOff.setPhysicalScreenHeight(sOn.getPhysicalScreenHeight());
+
+ // attach the same view to the offscreen canvas
+ View view = univ.getViewer().getView();
+ view.addCanvas3D(offScreenCanvas);
+
+ // tell onscreen about the offscreen so it knows to
+ // render to the offscreen at postswap
+ onScreenCanvas.setOffScreenCanvas(offScreenCanvas);
+
+ univ.addBranchGraph(scene);
+
+ view.stopView();
+ // Make sure that image are render completely
+ // before grab it in postSwap().
+ onScreenCanvas.setImageReady();
+ view.startView();
+ }
+
+ // ----------------------------------------------------------------
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
+ private void initComponents()
+ {
+ drawingPanel = new javax.swing.JPanel();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+ setTitle("Window Title");
+ drawingPanel.setLayout(new java.awt.BorderLayout());
+
+ drawingPanel.setPreferredSize(new java.awt.Dimension(500, 500));
+ getContentPane().add(drawingPanel, java.awt.BorderLayout.CENTER);
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[])
+ {
+ System.setProperty("sun.awt.noerasebackground", "true");
+ System.setProperty("j3d.rend", "jogl2es2");
+ System.setProperty("j3d.displaylist", "false");
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run()
+ {
+ new OffScreenTestGL2ES2().setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel drawingPanel;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButton.java b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButton.java
index e53a094..3b5db8a 100644
--- a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButton.java
+++ b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButton.java
@@ -48,6 +48,9 @@ import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
import javax.swing.JPopupMenu;
import org.jogamp.java3d.BranchGroup;
@@ -98,9 +101,9 @@ public class PrintFromButton extends javax.swing.JFrame {
//Create a raster
BufferedImage bImage = new BufferedImage(200, 200 ,
- BufferedImage.TYPE_INT_ARGB);
+ BufferedImage.TYPE_3BYTE_BGR);
ImageComponent2D buffer =
- new ImageComponent2D(ImageComponent.FORMAT_RGBA, bImage, true, true);
+ new ImageComponent2D(ImageComponent.FORMAT_RGB, bImage, true, true);
buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
drawRaster = new Raster(new Point3f(0.0f, 0.0f, 0.0f),
@@ -245,6 +248,14 @@ public class PrintFromButton extends javax.swing.JFrame {
private void myButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_myButtonActionPerformed
offScreenCanvas.print(false);
+
+ ImageIcon ic = new ImageIcon(offScreenCanvas.getOffScreenBuffer().getImage());
+ JFrame f = new JFrame("Output");
+ f.getContentPane().add(new JLabel(ic) );
+ f.setSize(200, 200);
+ f.setVisible(true);
+
+
}//GEN-LAST:event_myButtonActionPerformed
private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
diff --git a/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButtonGL2ES2.java b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButtonGL2ES2.java
new file mode 100644
index 0000000..5b1bcf5
--- /dev/null
+++ b/src/main/java/org/jdesktop/j3d/examples/offscreen_canvas3d/PrintFromButtonGL2ES2.java
@@ -0,0 +1,285 @@
+/*
+ * $RCSfile$
+ *
+ * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any
+ * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
+ * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
+ * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
+ * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
+ * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
+ * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
+ * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
+ * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
+ * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
+ * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ *
+ * You acknowledge that this software is not designed, licensed or
+ * intended for use in the design, construction, operation or
+ * maintenance of any nuclear facility.
+ *
+ * $Revision$
+ * $Date$
+ * $State$
+ */
+
+package org.jdesktop.j3d.examples.offscreen_canvas3d;
+
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPopupMenu;
+
+import org.jogamp.java3d.BranchGroup;
+import org.jogamp.java3d.GraphicsConfigTemplate3D;
+import org.jogamp.java3d.ImageComponent;
+import org.jogamp.java3d.ImageComponent2D;
+import org.jogamp.java3d.Raster;
+import org.jogamp.java3d.Screen3D;
+import org.jogamp.java3d.Shape3D;
+import org.jogamp.java3d.Transform3D;
+import org.jogamp.java3d.TransformGroup;
+import org.jogamp.java3d.View;
+import org.jogamp.java3d.utils.geometry.ColorCube;
+import org.jogamp.java3d.utils.universe.SimpleUniverse;
+import org.jogamp.vecmath.Point3f;
+import org.jogamp.vecmath.Vector3d;
+
+/**
+ * PrintFromButton programs with simple UI.
+ */
+public class PrintFromButtonGL2ES2 extends javax.swing.JFrame {
+
+ private SimpleUniverse univ = null;
+ private BranchGroup scene = null;
+ private Raster drawRaster = null;
+ private OffScreenCanvas3D offScreenCanvas = null;
+
+ public BranchGroup createSceneGraph() {
+ // Create the root of the branch graph
+ BranchGroup objRoot = new BranchGroup();
+
+ // trans object has composited transformation matrix
+ Transform3D trans = new Transform3D();
+ Transform3D rot = new Transform3D();
+
+ trans.rotX(Math.PI/4.0d);
+ rot.rotY(Math.PI/5.0d);
+ trans.mul(rot);
+ trans.setScale(0.7);
+ trans.setTranslation(new Vector3d(-0.4, 0.3, 0.0));
+
+ TransformGroup objTrans = new TransformGroup(trans);
+ objRoot.addChild(objTrans);
+
+ // Create a simple shape leaf node, add it to the scene graph.
+ // ColorCube is a Convenience Utility class
+ objTrans.addChild(new ColorCube(0.4));
+
+ //Create a raster
+ BufferedImage bImage = new BufferedImage(200, 200 ,
+ BufferedImage.TYPE_3BYTE_BGR);
+ ImageComponent2D buffer =
+ new ImageComponent2D(ImageComponent.FORMAT_RGB, bImage, true, true);
+ buffer.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);
+
+ drawRaster = new Raster(new Point3f(0.0f, 0.0f, 0.0f),
+ Raster.RASTER_COLOR,
+ 0, 0, 200, 200, buffer, null);
+
+ drawRaster.setCapability(Raster.ALLOW_IMAGE_WRITE);
+ Shape3D shape = new Shape3D(drawRaster);
+ objRoot.addChild(shape);
+
+ // Let Java 3D perform optimizations on this scene graph.
+ objRoot.compile();
+
+ return objRoot;
+ }
+
+ private OnScreenCanvas3D createOnScreenCanvasAndUniverse() {
+ // Get the preferred graphics configuration for the default screen
+ GraphicsConfiguration config =
+ SimpleUniverse.getPreferredConfiguration();
+
+ // Create a Canvas3D using the preferred configuration
+ OnScreenCanvas3D onScrCanvas = new OnScreenCanvas3D(config, false);
+
+ // Create simple universe with view branch
+ univ = new SimpleUniverse(onScrCanvas);
+
+ // This will move the ViewPlatform back a bit so the
+ // objects in the scene can be viewed.
+ univ.getViewingPlatform().setNominalViewingTransform();
+
+ // Ensure at least 5 msec per frame (i.e., < 200Hz)
+ univ.getViewer().getView().setMinimumFrameCycleTime(5);
+
+ return onScrCanvas;
+ }
+
+ private OffScreenCanvas3D createOffScreenCanvas() {
+ // request an offscreen Canvas3D with a single buffer configuration
+ GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
+ template.setDoubleBuffer(GraphicsConfigTemplate3D.UNNECESSARY);
+ GraphicsConfiguration gc =
+ GraphicsEnvironment.getLocalGraphicsEnvironment().
+ getDefaultScreenDevice().getBestConfiguration(template);
+
+ // Create a offscreen Canvas3D using the single buffer configuration.
+ OffScreenCanvas3D offScrCanvas =
+ new OffScreenCanvas3D(gc, true, drawRaster);
+
+ return offScrCanvas;
+ }
+
+ /**
+ * Creates new form PrintFromButton
+ */
+ public PrintFromButtonGL2ES2() {
+ // Initialize the GUI components
+ JPopupMenu.setDefaultLightWeightPopupEnabled(false);
+ initComponents();
+
+ // Create the content branch and add it to the universe
+ scene = createSceneGraph();
+
+ // Create an OnScreenCanvas3D and SimpleUniverse; add canvas to drawing panel
+ OnScreenCanvas3D onScreenCanvas = createOnScreenCanvasAndUniverse();
+ drawingPanel.add(onScreenCanvas, java.awt.BorderLayout.CENTER);
+
+ // Creante an OffScreenCanvas3D
+ offScreenCanvas = createOffScreenCanvas();
+
+ // set the offscreen to match the onscreen
+ Screen3D sOn = onScreenCanvas.getScreen3D();
+ Screen3D sOff = offScreenCanvas.getScreen3D();
+ sOff.setSize(sOn.getSize());
+ sOff.setPhysicalScreenWidth(sOn.getPhysicalScreenWidth());
+ sOff.setPhysicalScreenHeight(sOn.getPhysicalScreenHeight());
+
+ // attach the same view to the offscreen canvas
+ View view = univ.getViewer().getView();
+ view.addCanvas3D(offScreenCanvas);
+
+ univ.addBranchGraph(scene);
+ }
+
+ // ----------------------------------------------------------------
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
+ private void initComponents() {
+ java.awt.GridBagConstraints gridBagConstraints;
+
+ guiPanel = new javax.swing.JPanel();
+ myButton = new javax.swing.JButton();
+ drawingPanel = new javax.swing.JPanel();
+ jMenuBar1 = new javax.swing.JMenuBar();
+ fileMenu = new javax.swing.JMenu();
+ exitMenuItem = new javax.swing.JMenuItem();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+ setTitle("Window Title");
+ guiPanel.setLayout(new java.awt.GridBagLayout());
+
+ myButton.setText("Print");
+ myButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ myButtonActionPerformed(evt);
+ }
+ });
+
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+ gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4);
+ guiPanel.add(myButton, gridBagConstraints);
+
+ getContentPane().add(guiPanel, java.awt.BorderLayout.NORTH);
+
+ drawingPanel.setLayout(new java.awt.BorderLayout());
+
+ drawingPanel.setPreferredSize(new java.awt.Dimension(500, 500));
+ getContentPane().add(drawingPanel, java.awt.BorderLayout.CENTER);
+
+ fileMenu.setText("File");
+ exitMenuItem.setText("Exit");
+ exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ exitMenuItemActionPerformed(evt);
+ }
+ });
+
+ fileMenu.add(exitMenuItem);
+
+ jMenuBar1.add(fileMenu);
+
+ setJMenuBar(jMenuBar1);
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void myButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_myButtonActionPerformed
+ offScreenCanvas.print(false);
+
+ ImageIcon ic = new ImageIcon(offScreenCanvas.getOffScreenBuffer().getImage());
+ JFrame f = new JFrame("Output");
+ f.getContentPane().add(new JLabel(ic) );
+ f.setSize(200, 200);
+ f.setVisible(true);
+
+
+ }//GEN-LAST:event_myButtonActionPerformed
+
+ private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
+ System.exit(0);
+ }//GEN-LAST:event_exitMenuItemActionPerformed
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {System.setProperty("sun.awt.noerasebackground", "true");
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new PrintFromButtonGL2ES2().setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel drawingPanel;
+ private javax.swing.JMenuItem exitMenuItem;
+ private javax.swing.JMenu fileMenu;
+ private javax.swing.JPanel guiPanel;
+ private javax.swing.JMenuBar jMenuBar1;
+ private javax.swing.JButton myButton;
+ // End of variables declaration//GEN-END:variables
+
+}