3 JavaD を用いての 次元画像の表現
3.13 Java と Java Applet の組み合わせによるJava3D
しかし,指定した順番に処理させることも可能である.
そのためには
OrderedGroup
クラスを利用する.このクラスはGroup
の1
つで,その下 にぶら下げられているオブジェクトは必ずぶら下げられた順に処理される.ソースプログラムの例を示す.
BranchGroup root = new BranchGroup();
OrderedGroup orderedGroup=new OrderedGroup();
orderedGroup.addChild(new Sphere());//(1
番目に処理される) orderedGroup.addChild(new ColorCube());// (2
番目に処理される)root.addchild(orderedGroup);
このソースプログラムの場合,球が表示されてからその後に色つき立方体が表示される.
まず,ボタンの使用を許可させるために extends Applet
以下にimplements ActionListener {
を加える.これはボタンごとに違うので” , ”によって複数指定が可能である.
次にボタンの定義を行う.
Button rotateA = new Button("左");
Button rotateB = new Button("右");
ボタン
1
つごとに1
つずつボタンの定義を行い,文字を入力したいときは( )に文字 を入力する.この場合は「左」「右」という2
個のボタンになる.Panel p = new Panel();
p.add( rotateA );
p.add( rotateB );
add("South",p);
パネルを定義し,そこに先ほど定義したボタンを指定する.パネルの表示位置は
North
(上),South(下)
,West(左),East(右),Center(中央)となる.ボタンは表示の順に並ぶことになる.なお,ここで行を変えたり文字やパネルの色を指定 することもできる.
rotateA.addActionListener( this );
rotateB.addActionListener( this );
ここで
implements ActionListener にボタンを加える.
public void actionPerformed( ActionEvent e ) { if ( e.getSource() == rotateA ){
angle += Math.toRadians( 10 );
trans.rotX( angle );
objTrans.setTransform( trans );
}
if ( e.getSource() == rotateB ){
angle -= Math.toRadians( 10 );
trans.rotX( angle );
objTrans.setTransform( trans );
} }
このようにしてボタンを押したときの処理を定義する,この場合「左」のボタンを押すと 物体が左に
10゜,
「右」のボタンを押すと右に10゜回転するように設定してある.if
文やif〜else
文を使って表現するとが多い.3.13.4 ラジオボタンの作り方
ラジオボタン(チェックボタン)を設置するときも基本的に通常のボタンの設置と同じ ような処理を行う.ただし多少異なる部分がある.
まず通常ボタン用に用意した
implements ActionListener {
をimplements ItemListener{(ラジオボタン用)に変更する.
CheckboxGroup Box = new CheckboxGroup();
ラジオボタンは複数の選択肢から
1
つのみ選択するので,まず,ラジオボタンの所属する グループを定義する.Checkbox box1 = new Checkbox( "通常色 1", Box,true );
Checkbox box2 = new Checkbox( "通常色 2", Box,false );
または
Checkbox box1, box2;
()内は(“ボタンに表示させたい文章や,所属する
CheckboxGroup
の名前,ボタンの初期 状態(true最初にチェックが存在する,falseがチェックされていない)となっている.p.setLayout(gl);
p.add( box );
p.add( box );
add("South",p);
または
p.setLayout(gl);
p.add(new Checkbox( "通常色 1",Box,true )) p.add(new Checkbox( "通常色 2",Box,false ));
add("South",p);
の形式でパネルに設置する.
box1.addItemListener(this);
box2.addItemListener(this);
通常ボタンの
ActionListener
がラジオボタン用のItemListener
に変更になる.public void itemStateChanged( ItemEvent e ) { root2.detach();
universe.addBranchGraph( root1 );
}
if( box2.getState() ) { root1.detach();
universe.addBranchGraph( root2 );
} }
通常ボタン用の
public void actionPerformed( ActionEvent e ) {
をラジオボタン用の
public void itemStateChanged( ItemEvent e ) { に変更する.
if ( e.getSource() == rotateA ){も if( box1.getState() ) {という形式に変更する.
if
内の処理を説明するとBranchGroup
をCapability bit
にdetach()を使って切り替えて
いる.図3.2ボタン(左),ラジオボタン(右)
ドキュメント内
橡新潟工科大卒研論文本文.PDF
(ページ 41-44)