[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01128] ボタンイベント



■■ コンテンツ販売サイト LivLib今すぐクリック!→ http://www.livlib.com ■■
  年賀状、クリスマスデザインと小説、画集を販売! 辰年向けの龍デザインや当社
  マスコット、パンツうさぎのサンタクロース画像などを新発売。
  雑誌「シャレード」でもおなじみの佐伯薫著の新撰組、学園JUNE小説や懐かしい
  雰囲気の「小豆島物語」、ユニークなSF短編集「仮想空間生活」など、冬の夜長に
  お楽しみいただけます。日展で活躍中の高山知也画伯の画集なども絶賛発売中!
■■ 年賀状・クリスマス・画集コンテンツ販売サイト  http://www.livlib.com ■■

うおたにです.
前回質問いたしました,視点の移動のことですが,
それはまた別に書かせていただこうと思います..

本日は,ボタンイベントについて質問があります.
ボタンを押すことによって,zoomやrotateなどの機能を有効にするといった風にしたいのですが,
ボタンを押す押さないに関わらず,zoomの機能が有効になってしまいます.
また,ボタンのラベルも変わるのですが,一度押すとそのは後変化しなくなりました.
一度押した後に,初期化といった作業をする必要があるのでしょうか?

ソースを一緒に載せておきますので,よろしくお願いします.

---------------------------------------------------------------
01  import java.awt.*;
02  import java.awt.event.*;
03  import javax.media.j3d.*;
04  import javax.vecmath.*;
05  import com.sun.j3d.utils.applet.MainFrame;
06  import com.sun.j3d.utils.universe.*;
07  import com.sun.j3d.utils.geometry.*;
08  import com.sun.j3d.utils.behaviors.mouse.*;
09
10  public class Browser extends Frame {
11	private MouseZoom mz=null;
12
13	public Browser(){
14		this.setLayout(new BorderLayout());
15		Panel p = new Panel();
16		p.setLayout( new GridLayout(1,1) );
17		this.add(p, "South");
18
19		final Button b=new Button("zoom");
20		b.addActionListener(new ActionListener(){
21			public void actionPerformed(ActionEvent e){
22				String blabel=b.getLabel();
23				if(blabel.equals("zoom")){
24					mz.setEnable(true);
25					b.setLabel("default");
26				}
27				else if (b.equals("default")){
28					mz.setEnable(false);
29					b.setLabel("zoom");
30				}
31			}
32		});
33		
34		p.add(b);
35
36		Canvas3D c = new Canvas3D( null );
37		SimpleUniverse u = new SimpleUniverse(c);
38		add("Center",c);
39		u.getViewingPlatform().setNominalViewingTransform();
40	 	u.addBranchGraph(setBranchGroup());
41	}
42
43 public BranchGroup setBranchGroup(){
44		BranchGroup bg =new BranchGroup();
45		TransformGroup tg =new TransformGroup();
46		
47		tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
48		tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
49		tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
50		
51		Shape3D triangle=new Shape3D();
52		TriangleArray geom=new TriangleArray(6,
53		TriangleArray.COORDINATES |TriangleArray.COLOR_3);
54		Point3d[] coords={new Point3d(0.0,0.6928,0.0),
55			      new Point3d(-0.6,-0.3464,0.0),
56			      new Point3d(0.6,-0.3464,0.0),
57			      new Point3d(0.0,0.6928,0.0),
58			      new Point3d(0.6,-0.3464,0.0),
59			      new Point3d(-0.6,-0.3464,0.0)};
60		Color3f[] colors={new Color3f(1.0f,1.0f,0.0f),
61			      new Color3f(0.0f,1.0f,1.0f),
62			      new Color3f(1.0f,0.0f,1.0f),
63			      new Color3f(0.0f,0.0f,1.0f),
64			      new Color3f(0.0f,1.0f,0.0f),
65			      new Color3f(1.0f,0.0f,0.0f)};
66		geom.setCoordinates(0,coords);
67		geom.setColors(0,colors);
68		geom.setCapability(Geometry.ALLOW_INTERSECT);
69		triangle.setGeometry(geom);
70		tg.addChild(triangle);
71		bg.addChild(tg);
72		
73		mz=new MouseZoom(); 	
74		BoundingSphere bs =
75			new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
76		mz.setTransformGroup(tg);
77		mz.setSchedulingBounds(bs);	
78		bg.addChild(mz);			
79		return bg;
80	}	
81
82	public static void main (String[] ar){
83		Frame f=new Browser();
84		f.setTitle("Browser");
85		f.setSize(500,500);
86		f.show();
87	}
88 }


-----------------------------------------------------------------------

Yukari Uotani <uotani@xxxxxxxxxx>