Hi Alex,
Try the attached code and see if that is what you
are looking for. The code is within init(), but
you could improve it by creating a self-contained
JPanel as a subclass of JPanel that will add the
text or events or both, then add it to a part of
the layout of the Container (in this case a JApplet).
Hope this helps. Regards,
Alejandro
-----Original Message-----
From: Discussion list for Java 3D API
[mailto:JAVA3D-INTEREST@;JAVA.SUN.COM]On Behalf Of Alex
Sent: Thursday, October 24, 2002 1:23 AM
To: [EMAIL PROTECTED]
Subject: Re: [JAVA3D] Swing component on Canvas3D
Hi All,
Actually, all I want to do is to add a translucent JTextArea onto the
Canvas3D. I need the Canvas3D to be the background for this JTextArea. Is
there any alternatives for me to achieve this?
Thanks in Advance.
- Alex -
----- Original Message -----
From: "Alejandro Allievi" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, October 24, 2002 2:42 AM
Subject: Re: [JAVA3D] Swing component on Canvas3D
> Hi,
>
> I agree with Peter.
>
> As a general rule, avoid "mixing" GUI components
> and graphics by placing them in different JPanels (or subclasses of it).
> This minimizes chances of GUI components and/or graphics not displaying
> properly.
>
> Regards,
>
> Alejandro
>
> -----Original Message-----
> From: Discussion list for Java 3D API
> [mailto:JAVA3D-INTEREST@;JAVA.SUN.COM]On Behalf Of Peter Szinek
> Sent: Wednesday, October 23, 2002 5:25 AM
> To: [EMAIL PROTECTED]
> Subject: Re: [JAVA3D] Swing component on Canvas3D
>
>
> Hello Alex,
>
> Wednesday, October 23, 2002, 09:59:19, you wrote:
>
> A> Hi all,
>
> A> Is it possible to add a swing component, say a JTextArea onto a
Canvas3D?
> If its possible, how do I go about adding them?
>
> Are you sure you need to add it on the *Canvas3D*?
> Wouldn't be sufficient to add it below/over/right/left of the Canvas on
the
> Panel/Frame/Apple/whatever?
>
> I am not even sure at all you can add swing components on the canvas.
>
> However, if you are talking about adding GUI, try something like this:
>
> ...
>
> setLayout( new BorderLayout() );
>
> Canvas3D canvas = new Canvas3D(...);
> JPanel guiPanel = new JPanel();
>
> add(guiPanel, BorderLayout.EAST);
> add (canvas, BorderLayout.CENTER);
>
> ...
>
> Then add everything to guiPanel as usual.
>
> A> Thanks in advance.
>
> A> - Alex -
>
>
>
> --
> Best regards,
> Peter mailto:szyp@;pobox.sk
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff JAVA3D-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
>
===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff JAVA3D-INTEREST". For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".
/*
* @(#)HelloUniverse.java 1.54 02/04/01 15:03:11
*
* Copyright (c) 1996-2002 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:
*
* - Redistributions 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 AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THE 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 SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* You acknowledge that Software is not designed,licensed or intended
* for use in the design, construction, operation or maintenance of
* any nuclear facility.
*/
import javax.swing.JApplet;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import java.awt.Color;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class HelloUniverseText extends JApplet {
private SimpleUniverse u = null;
public BranchGroup createSceneGraph() {
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
// Create the TransformGroup node and initialize it to the
// identity. Enable the TRANSFORM_WRITE capability so that
// our behavior code can modify it at run time. Add it to
// the root of the subgraph.
TransformGroup objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
// A call to objTrans.setTransform() is now legal!!
objRoot.addChild(objTrans);
// Create a simple Shape3D node; add it to the scene graph.
objTrans.addChild(new ColorCube(0.4));
Point3f point[] = new Point3f[90];
// Create a new Behavior object that will perform the
// desired operation on the specified transform and add
// it into the scene graph.
Transform3D yAxis = new Transform3D();
Alpha rotationAlpha = new Alpha(-1, 10000);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objTrans, yAxis,
0.0f, (float) Math.PI*2.0f);
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
rotator.setSchedulingBounds(bounds);
objRoot.addChild(rotator);
// Have Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
}
public HelloUniverseText() {
}
public void init() {
getContentPane().setLayout(new BorderLayout());
// Need getContentPane() for JApplet
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
getContentPane().add("Center", c); // Need getContentPane() for JApplet
JPanel jpTop = new JPanel();
jpTop.setBackground(new Color(0,0,0));
JTextArea jtTop = new JTextArea("This is TOP text for HelloUniverse");
jtTop.setForeground(new Color(255,255,255));
jtTop.setBackground(new Color(0,0,0));
jpTop.add(jtTop);
getContentPane().add("North", jpTop);
JPanel jpBottom = new JPanel();
jpBottom.setBackground(new Color(0,0,0));
JTextArea jtBottom = new JTextArea("This is BOTTOM text for HelloUniverse");
jtBottom.setForeground(new Color(255,255,255));
jtBottom.setBackground(new Color(0,0,0));
jpBottom.add(jtBottom);
getContentPane().add("South", jpBottom);
// Create a simple scene and attach it to the virtual universe
BranchGroup scene = createSceneGraph();
u = new SimpleUniverse(c);
// This will move the ViewPlatform back a bit so the
// objects in the scene can be viewed.
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
public void destroy() {
u.removeAllLocales();
}
//
// The following allows HelloUniverse to be run as an application
// as well as an applet
//
public static void main(String[] args) {
new MainFrame(new HelloUniverseText(), 256, 256);
}
}