[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:02025] Re: 解決しました Re: Swing と Java3D
------------------------- infoseek ML Sponsor --------------------------
★★楽しかった夏休み!★★でもサイフの中身はカラッポ・・★★
┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓┏━┓
┃ロ┃┃ー┃┃ン┃┃カ┃┃ー┃┃ド┃┃特┃┃集┃┃!┃
┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛┗━┛
貴方に合ったローンカードは? http://www.loanginza.com/01
------------------------------------------------------------------------
古川です。
> >いろいろ試した結果、Java3Dの画面を
> >OffScreen 上に表示、マウスで動かすことが
> >できるようになりました。
> >ご希望なら簡単なソースをお送りいたします。
>
> ぜひお願いします。
少し長いソースなのでMLに流すのを躊躇したのですが、
思い直して添付します。
あまり美しくないソースですが、ご参考まで。
お気づきの点はご指摘ください。
P.S.
インデントが変になってしまってすみません。
貼り付けの時、変にインデントされてしまいます。
------------ここから-----------------
import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.applet.*;
import javax.vecmath.*;
import java.awt.event.*;
import javax.media.j3d.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import java.awt.image.BufferedImage;
public class Test {
public static void main( String[] args ) {
JFrame frame = new JFrame( "Java3D Test5" );
JDesktopPane desktop = new JDesktopPane();
frame.getContentPane().add( desktop , BorderLayout.CENTER );
frame.setSize( 500 , 500 );
frame.setLocation( 100 , 100 );
frame.setVisible( true );
JIFrame f1 = new JIFrame( "Frame1" );
f1.setBounds( 20 , 20 , 300 , 300 );
desktop.add( f1 );
f1.setVisible( true );
JIFrame f2 = new JIFrame( "Frame2" );
f2.setBounds( 100 , 100 , 300 , 300 );
desktop.add( f2 );
f2.setVisible( true );
}
}
class JIFrame extends JInternalFrame {
public myJPanel panel;
public JIFrame( String title ) {
super( title );
panel = new myJPanel();
// JPanel panel = getJ3DPanel();
setClosable( true );
setMaximizable( true );
setIconifiable( true );
setResizable( true );
getContentPane().add( panel , BorderLayout.CENTER );
}
}
class myJPanel extends JPanel {
public SimpleUniverse universe;
public Canvas3D canvas;
public Transform3D translation;
public TransformGroup objTrans;
myJPanel() {
mygetImage();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
setLayout(new BorderLayout());
g.drawImage(canvas.getOffScreenBuffer().getImage(),0,0,this.getSize().width,
this.getSize().height,this);
}
public void mygetImage() {
canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration(),true);
universe = new SimpleUniverse( canvas );
BranchGroup root = new BranchGroup();
objTrans = new TransformGroup();
translation = new Transform3D();
objTrans.setTransform( translation );
Shape3D shape = new ColorCube( 0.5 );
objTrans.addChild( shape );
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
MouseRotate rotator = new MouseRotate( this, objTrans );
MouseTranslate trans = new MouseTranslate( this, objTrans );
MouseZoom zoomer = new MouseZoom( this, objTrans );
BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0);
rotator.setSchedulingBounds( bounds );
trans.setSchedulingBounds( bounds );
zoomer.setSchedulingBounds( bounds );
objTrans.addChild( rotator );
objTrans.addChild( trans );
objTrans.addChild( zoomer );
root.addChild( objTrans );
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph( root );
Dimension dd=new Dimension();
dd=this.getSize();
if(dd.width==0) dd.width=500;
if(dd.height==0) dd.height=500;
canvas.getScreen3D().setSize(dd);
canvas.getScreen3D().setPhysicalScreenHeight(1);
canvas.getScreen3D().setPhysicalScreenWidth(1);
BufferedImage bi=new BufferedImage(100,100,BufferedImage.TYPE_INT_BGR);
ImageComponent2D img2d= new
ImageComponent2D(ImageComponent2D.FORMAT_RGB,bi);
canvas.setOffScreenBuffer(img2d);
canvas.waitForOffScreenRendering();
canvas.renderOffScreenBuffer();
repaint();
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
System.out.println("mouse pressed------");
}
public void mouseReleased(MouseEvent e){
System.out.println("mouse Released-----");
}
});
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
System.out.println("mouse Dragged-----");
canvas.waitForOffScreenRendering();
canvas.renderOffScreenBuffer();
repaint();
}
});
}
}
----------
古川 裕之
------------------------------------------------------------------------
★今さら人に聞けないこと、この際だから聞いちゃおう!
http://research.infoseek.co.jp/entry_n.phtml?magazine_id=107&svx=971122