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);
}
}
No.1ベストアンサー
- 回答日時:
問題部分を抜き書きすると以下のようになります。
public class J3D82 extends JApplet {
JButton b1;// class field
public J3D82(){
JButton b1=new JButton("移動");// method内 local 変数として、宣言し直されている
// class fieldのb1に代入するなら、行頭のクラス型宣言は不要
}
public class Listener1 implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){// class fieldを見ているが、インスタンスが代入されていないので、trueになることはない
}
}
}
}
hrm_mmmさん、ほんとにありがとうございました!
早速、hrm_mmmさんの回答のように直し実行するとボタンクリックにより、うまく点が平行移動しました。
hrm_mmmさん、感謝です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シャットダウンフックが呼ばれない
-
ActionForm form にnullが入っ...
-
eclipseに記述したjavaファイル...
-
setAttribute(String, int)は適...
-
Selenium IDEでexportしたコー...
-
かなり初歩的なプログラミング...
-
ファイル名を動的に生成したい
-
アプレットを実行すると、×が表...
-
なんかエラーがでた
-
文字列を数式に
-
アルファベットのソート
-
透過GIFの判定の仕方ありますか?
-
HTMLでのTableタグデータ取得方法
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
-
Junitテストでvoid戻り値メッソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
Javaを使ってデジタル時計を作...
-
ColabでのPytorchのエラー
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
ファイル名を動的に生成したい
-
文字列を数式に
-
<forEach> 内で供給された "ite...
-
シャットダウンフックが呼ばれない
-
Javaからストアド実行(配列項目)
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
(急募)JavaカレンダーをGUI可に...
-
文字サイズが可変のラベル
-
Java での グローバルIP取得
-
python OpenPyXLを使って出力結...
-
データの外挿について
おすすめ情報