※ ChatGPTを利用し、要約された質問です(原文:java3D ボタンクリックにより点を動かすには)
java3Dボタンクリックにより点を動かすには
2007/09/17 12:12
このQ&Aのポイント
ボタンクリックにより点を動かすためのjava3Dのソースコードを作成しましたが、動作しない場合はどこを修正すればよいでしょうか?
Java3Dでボタンクリックにより点を動かすためのソースコードを作成しましたが、変化がありません。どこを修正すればいいでしょうか?
java3Dでボタンクリックにより点を移動させる方法についての質問です。ソースコードを作成しましたが、動かないようです。どこを修正すればいいですか?
java3D ボタンクリックにより点を動かすために下記のようにソースコードを作成しましたが、全く変化なしです。どこをどうすればよいでしょうか?
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.*;
import javax.swing.JApplet.*;
import javax.swing.JFrame.*;
import javax.media.j3d.*;
import com.sun.j3d.utils.applet.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.picking.*;
import com.sun.j3d.utils.picking.behaviors.*;
public class J3D82 extends JApplet
{
JButton b1;
GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas=new Canvas3D(config);
SimpleUniverse universe=new SimpleUniverse(canvas);
BranchGroup root=new BranchGroup();
TransformGroup trans1=new TransformGroup();
Transform3D tr=new Transform3D();
Shape3D gggrid1=null;
public J3D82()
{
setLayout(new BorderLayout());
add(canvas,BorderLayout.CENTER);
JPanel panel=new JPanel();
GridLayout g1=new GridLayout(1,1);
add(panel,BorderLayout.NORTH);
JButton b1=new JButton("移動");
panel.setLayout(g1);
panel.add(b1);
root.setCapability(BranchGroup.ALLOW_DETACH);
root.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
trans1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
trans1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
root.addChild(trans1);
double x=0.2;
double y=0.2;
double z=0.2;
Point3d[] po1=new Point3d[2];
po1[0]=new Point3d(x,y,z);
po1[1]=new Point3d(x,-y,-z);
float[] colorPo1={1.0f,0.0f,0.0f,
1.0f,0.0f,0.0f};
PointArray ge1=new PointArray(po1.length, GeometryArray.COORDINATES | GeometryArray.COLOR_3);
ge1.setCoordinates(0,po1);
ge1.setColors(0,colorPo1);
Appearance appp1=new Appearance();
appp1.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_READ);
appp1.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_WRITE);
PointAttributes ppo1=new PointAttributes();
ppo1.setPointSize(25.0f);
ppo1.setPointAntialiasingEnable(true);
appp1.setPointAttributes(ppo1);
Shape3D gggrid1=new Shape3D(ge1,appp1);
gggrid1.setCapability(Shape3D.ALLOW_GEOMETRY_READ);
gggrid1.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
trans1.addChild(gggrid1);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(root);
b1.addActionListener(new Listener1());
}
public class Listener1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1){
Transform3D tr=new Transform3D();
Vector3d vector=new Vector3d(0.2,0.1,0.0);
trans1.getTransform(tr);
tr.setTranslation(vector);
trans1.setTransform(tr);
trans1.addChild(gggrid1);
}
}
}
public static void main(String[] args)
{
JFrame f= new JFrame();
J3D82 frame=new J3D82();
frame.init();
f.getContentPane().add(frame,BorderLayout.CENTER);
f.setSize(500,500);
f.setTitle("Kuukan:点移動ボタン");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
質問の原文を閉じる
質問の原文を表示する
お礼
hrm_mmmさん、ほんとにありがとうございました! 早速、hrm_mmmさんの回答のように直し実行するとボタンクリックにより、うまく点が平行移動しました。 hrm_mmmさん、感謝です。