java3Dボタンクリックにより点を動かすには

このQ&Aのポイント
  • ボタンクリックにより点を動かすためのjava3Dのソースコードを作成しましたが、動作しない場合はどこを修正すればよいでしょうか?
  • 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); } }

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答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になることはない } } } }

10091014
質問者

お礼

hrm_mmmさん、ほんとにありがとうございました! 早速、hrm_mmmさんの回答のように直し実行するとボタンクリックにより、うまく点が平行移動しました。 hrm_mmmさん、感謝です。

関連するQ&A

  • Java3Dで三角形を回転させたい

    Java3D初心者です。 三角形を表示しy軸回転をさせて円すいのような形を作りたいのですが、なかなか進みません。 とりあえず三角形をを表示させるプログラムを作り、 それをRotationInterpolatorクラスに従って回転させるプログラムを作りたいのですが、エラーが出てしまいます。 ご指摘お願いします。 三角形プログラム↓ import java.applet.Applet; import java.awt.BorderLayout; import java.awt.event.*; import java.awt.GraphicsConfiguration; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*; public class Sample3D3 extends Applet {  public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup();     TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objTrans);     Point3d[] vertices = new Point3d[3]; vertices[0] = new Point3d(-0.9, 0.5, 0.0); vertices[1] = new Point3d(-0.9, -0.9, 0.0); vertices[2] = new Point3d(0.0, -0.9,0.0); TriangleArray geometry = new TriangleArray(vertices.length,GeometryArray.COORDINATES);     geometry.setCoordinates(0, vertices);     Shape3D shape = new Shape3D(geometry);     objRoot.addChild(shape);     objRoot.compile();     return objRoot;} public Material material3; public TransformGroup transformGroup4; public Transform3D transform3D4; public Sample3D3() { setLayout(new BorderLayout()); GraphicsConfiguration config =            SimpleUniverse.getPreferredConfiguration();     Canvas3D c = new Canvas3D(config); add("Center", c);     BranchGroup scene = createSceneGraph(); SimpleUniverse u = new SimpleUniverse(c);  u.getViewingPlatform().setNominalViewingTransform();     u.addBranchGraph(scene);} public static void main(String[] args) { new MainFrame(new Sample3D3(), 400, 400); } } 回転プログラム↓ import java.applet.*; import java.awt.*; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.applet.MainFrame; public class Jikken extends Applet { public Jikken() { Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); BorderLayout borderLayout = new BorderLayout();  this.setLayout( borderLayout);  this.add( canvas3D, BorderLayout.CENTER); SimpleUniverse simpleUniverse = new SimpleUniverse(canvas3D);  simpleUniverse.getViewingPlatform().setNominalViewingTransform(); BranchGroup objRoot = new BranchGroup(); DirectionalLight directionalLight = new DirectionalLight(); TransformGroup transformGroup = new TransformGroup(); Sample3D3 sample3D3 = new Sample3D3(); BoundingSphere boundingSphere = new BoundingSphere(); transformGroup.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); Alpha alpha = new Alpha(); RotationInterpolator rotationInterpolator = new RotationInterpolator(alpha,transformGroup); rotationInterpolator.setSchedulingBounds(boundingSphere); directionalLight.setInfluencingBounds(boundingSphere); transformGroup.addChild(rotationInterpolator); transformGroup.addChild(sample3D3); objRoot.addChild(transformGroup); objRoot.addChild(directionalLight); simpleUniverse.addBranchGraph(objRoot); } public static void main(String[] argV){ Jikken jikken = new Jikken(); MainFrame mainFrame = new MainFrame(jikken,500,500); } } これで回転プログラムを実行すると、 型 Group のメソッド addChild(Node) は引数 (Sample3D3) に適用できません。という内容のエラーが表示されます。 読みにくくてすみませんがよろしくお願いします。

    • ベストアンサー
    • Java
  • Java3D 座標の値を入力し点を表示させるには

    Java3D 座標の値を入力することにより点を表示させたいです。そのために下記のように主な部分のソースコードを作成しました。どこをどうすればよいでしょう教えてください! public class Test extends Applet{ boolean isStandalone=false; Canvas3D canvas=null; SimpleUniverse universe=new SimpleUniverse(canvas); BranchGroup scene=createSceneGraph(); BranchGroup root3=new BranchGroup(); TransformGroup trans3=new TransformGroup(); float x; float y; float z; Vector3f pointposition = new Vector3f(0.0f, 0.0f, 0.0f); TuplePanel bgpanel=new TuplePanel(pointposition) public Test(){ this(false); } public Test(final boolean isStandalone){ this.isStandalone = isStandalone; this.setLayout(new BorderLayout()); Panel panel=new Panel(); this.add(panel,BorderLayout.NORTH); bgpanel.addTupleEventListener(new TupleEventListener(){   public void tupleStateChanged(TupleEvent e){ pointposition=e.getVector3f(); Transform3D t3d = new Transform3D(); t3d.setTranslation(pointposition); trans3=new TransformGroup(t3d); Point3f[] po3=new Point3f[1]; po3[0]=new Point3f(pointposition); PointArray ge3=new PointArray(po3.length, GeometryArray.COORDINATES | GeometryArray.COLOR_3); ge3.setCoordinate(0,po3[0]); Appearance appp3=new Appearance(); Shape3D gggrid3=new Shape3D(ge3,appp3); gggrid3.setGeometry(ge3); trans3.addChild(gggrid3); } }); panel.add(bgpanel); Button addbutton = new Button("Add"); addbutton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e) { universe.getLocale().removeBranchGraph(scene); scene.addChild(trans3); universe.addBranchGraph(scene); } }); panel.add(addbutton); } @Override public void init() { GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration(); ・・・ BranchGroup scene=createSceneGraph(); universe.addBranchGraph(scene); } private BranchGroup createSceneGraph(){ root3.setCapability(BranchGroup.ALLOW_DETACH); root3.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE); trans3.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); trans3.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); BoundingSphere bounds3 = new BoundingSphere(new Point3d(),100.0); ・・・ double[] vertices3= {0.65,0.00,0.05,//X軸 ・・・ }; float[] colorP3={0.0f,0.0f,0.0f               ・・・}; LineArray eom3=new LineArray(vertices3.length, GeometryArray.COORDINATES|GeometryArray.COLOR_3); eom3.setCoordinates(0,vertices3); eom3.setColors(0,colorP3); LineAttributes attr3=new LineAttributes(); attr3.setLineWidth(3.0f); Appearance p3=new Appearance(); p3.setLineAttributes(attr3); Shape3D rid3=new Shape3D(eom3,p3); rid3.setCapability(Shape3D.ALLOW_GEOMETRY_READ); trans3.addChild(rid3); Point3f[] po3=new Point3f[1]; po3[0]=new Point3f(x,y,z); float[] colorPo3={1.0f,0.0f,0.0f}; final PointArray ge3=new PointArray(po3.length, GeometryArray.COORDINATES | GeometryArray.COLOR_3); ge3.setCoordinate(0,po3[0]); ge3.setColors(0,colorPo3); Appearance appp3=new Appearance(); appp3.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_READ); appp3.setCapability(Appearance.ALLOW_POINT_ATTRIBUTES_WRITE); PointAttributes ppo3=new PointAttributes(); ppo3.setPointSize(25.0f);      appp3.setPointAttributes(ppo3); Shape3D gggrid3=new Shape3D(ge3,appp3); gggrid3.setCapability(Shape3D.ALLOW_GEOMETRY_READ); gggrid3.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE); trans3.addChild(gggrid3); return root3; }

  • 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.*; public class J3A7 extends JApplet { JTextField text1=new JTextField("x=",10); JTextField text2=new JTextField("y=",10); JTextField text3=new JTextField("z=",10); double a,b,c; String str1,str2,str3; GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas=new Canvas3D(config); SimpleUniverse universe=new SimpleUniverse(canvas); BranchGroup root=new BranchGroup(); TransformGroup trans1=new TransformGroup(); public J3A7() { setLayout(new BorderLayout()); add(canvas,BorderLayout.CENTER); JPanel panel=new JPanel(); GridLayout g1=new GridLayout(1,3); add(panel,BorderLayout.NORTH); panel.setLayout(g1); panel.add(text1); panel.add(text2); panel.add(text3); trans1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); trans1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); double x=0.0; double y=0.0; double z=0.0; Point3d[] po1=new Point3d[1]; po1[0]=new Point3d(x,y,z); float[] colorPo1={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); Transform3D tr=new Transform3D(); Vector3d vector=new Vector3d(a,b,c); tr.setTranslation(vector); trans1.setTransform(tr); trans1.addChild(gggrid1); root.addChild(trans1); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(root); text1.addActionListener(new Listener1()); text2.addActionListener(new Listener2()); text3.addActionListener(new Listener3()); } public class Listener1 implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==text1){ try{ String str1=text1.getText().trim(); a=Double.valueOf(text1.getText()).doubleValue(); }catch(NumberFormatException ex){} } } } public class Listener2 implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==text2){ try{ String str2=text2.getText().trim(); b=Double.valueOf(text2.getText()).doubleValue(); }catch(NumberFormatException ex){} } } } public class Listener3 implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource()==text3){ try{ String str3=text3.getText().trim(); c=Double.valueOf(text3.getText()).doubleValue(); }catch(NumberFormatException ex){} } } } public static void main(String[] args) { JFrame f= new JFrame(); J3A7 frame=new J3A7(); frame.init(); f.getContentPane().add(frame,BorderLayout.CENTER); f.setSize(500,500); f.setTitle("Kuukan: ボタン"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }

  • java3Dについておききします

    javaのバージョンは1.6.0_27です 困ってる内容は現在javaSDをEclipse3.5で使おうとjavaSDをインストールしてネットで調べながらやってますがうまくいいかないです いまどうなってるか画像をみて欲しいです 上手く言ってない理由はこのようなエラーが返ってなかなかすすみません 説明 リソース パス ロケーション 型 アクセス制限: 型 BranchGroup は必須ライブラリー C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext\j3dcore.jar で制限されているためアクセスできません Java3D_first_test.java /01-01/src 行 31 Java 問題 説明 リソース パス ロケーション 型 アクセス制限: 型 SimpleUniverse は必須ライブラリー C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext\j3dutils.jar で制限されているためアクセスできません Java3D_first_test.java /01-01/src 行 28 Java 問題 説明 リソース パス ロケーション 型 アクセス制限: 型 Transform3D は必須ライブラリー C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext\j3dcore.jar で制限されているためアクセスできません Java3D_first_test.java /01-01/src 行 37 Java 問題 説明 リソース パス ロケーション 型 アクセス制限: 型 TransformGroup は必須ライブラリー C:\Program Files\Java\jdk1.6.0_27\jre\lib\ext\j3dcore.jar で制限されているためアクセスできません Java3D_first_test.java /01-01/src 行 34 Java 問題 //****************************************************************************** //Java3D とりあえず動作確認するプログラム //カラーキューブ回転 //****************************************************************************** //============================================================================== //インポート・ファイル import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; import java.util.Timer; public class Java3D_first_test { //============================================================================= //クラスのフィールド //仮想空間全体 SimpleUniverse universe; //オブジェクトのためのグループ BranchGroup group1; //オブジェクトの座標変換のためのグループ TransformGroup transform_group1; //オブジェクトの座標変換のためのクラス Transform3D transform1; //回転角を管理 float rot_value; //============================================================================= //メイン・メソッド public static void main(String[] args) { Java3D_first_test test = new Java3D_first_test(); } } javaSDのライブラリはインポート文はエラー返ってないですが・・・ お優しくお願いします。なにが原因かわからずじまいな状態です

    • ベストアンサー
    • Java
  • 1つのキューブが変化したのか、2つの画像があって表示が切り替えられただけなのか、教えてください。

    最近、Java3Dの学習を始めました。 そして、「ボタンを押すとキューブが回転する」プログラムを作成しました。 下記のプログラムの場合、 1.最初に表示されていたキューブの座標が変化して表示された 2.「1面だけ表示されるキューブ」と「回転後のキューブ」の2つの画像がもともとあって、その画像が入れ替えられて表示された のどちらなのでしょうか? 私は1.のつもりで作成しました。 回答お願いいたします。 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 com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; public class bAL extends JApplet { JButton b1; GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); SimpleUniverse universe = new SimpleUniverse(canvas); BranchGroup root = new BranchGroup(); ColorCube colorcube; public bAL() { setLayout(new BorderLayout()); add(canvas,BorderLayout.CENTER); JPanel panel = new JPanel(); add(panel,BorderLayout.NORTH); JButton b1 = new JButton("表示"); panel.add(b1); root.setCapability(BranchGroup.ALLOW_DETACH); root.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE); TransformGroup tg = new TransformGroup(); colorcube = new ColorCube(0.3f); tg.addChild(colorcube); root.addChild(tg); universe.addBranchGraph(root); universe.getViewingPlatform().setNominalViewingTransform(); b1.addActionListener(new Listener1()); } public class Listener1 implements ActionListener { public void actionPerformed(ActionEvent e) { root.detach(); BranchGroup root =new BranchGroup(); TransformGroup tg = new TransformGroup(); Transform3D trX = new Transform3D(); trX.rotX(Math.PI/4.0); //回転(x軸) Transform3D trY = new Transform3D(); trY.rotY(Math.PI/4.0); //回転(y軸) Transform3D trZ = new Transform3D(); trZ.rotZ(Math.PI); //回転(z軸) trX.mul(trY); //合成変換(trX = trX*trY) trX.mul(trZ); //合成変換(trX = trX*trZ) tg.setTransform(trX); colorcube = new ColorCube(0.3f); tg.addChild(colorcube); root.addChild(tg); universe.addBranchGraph(root); } } public static void main(String[] args) { JFrame f = new JFrame(); bAL frame = new bAL(); frame.init(); f.getContentPane().add(frame,BorderLayout.CENTER); f.setSize(300,300); f.setTitle("ボタンでキューブが回転"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }

    • ベストアンサー
    • Java
  • Javaで作成した3D画像をIEに表示したいのですが・・

    以下のプログラムをIEで表示したいのですが、その方法が分かりません。 どこをどのように変更すれば表示できるようになるのでしょうか?(ちなみにappletviewerでは問題なく表示できます。) 回答をお待ちしています。 import java.applet.*; import java.awt.*; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.picking.behaviors.*; import com.sun.j3d.utils.applet.MainFrame; /*アプレットの作成*/ public class Fusen extends Applet { public Fusen() { //3D描画内容(省略します) } /*作成したクラスファイルの呼び出し*/ public static void main( String[]argV ){ Fusen fusen = new Fusen(); //Fusenクラスのインスタンスを生成 MainFrame mainFrame = new MainFrame(fusen, 500, 500); //MainFrameクラスのインスタンスを生成 } }

    • ベストアンサー
    • Java
  • java3dが動かない

    javaでプログラミングをしています. WindowsXPでJava3Dを使って3Dのスタンドアローンで動くアプリケーション(javaアプレットではないもの)を作ろうと思っています. しかし,プログラムがコンパイルエラーになってしまいます. プログラム自体は書籍のCD-ROMについてきたものなのでバグは無いはずです. 以下に必要な情報を示します. ・インストールしたもの(java3Dの書籍付属のCD-ROMから)   jdk-1_5_0_11-windows-i586-p.exe   java3d-1_5_0-windows-i586.exe ・コンパイルエラーの内容   : パッケージ javax.media.j3d は存在しません。   : パッケージ javax.vecmath は存在しません。   : パッケージ com.sun.j3d.utils.universe は存在しません。   : パッケージ com.sun.j3d.utils.geometry は存在しません。 ・java3Dを用いないjavaプログラムは動作する

    • ベストアンサー
    • Java
  • javaでスタート画面を作っていて困っています。

    現在javaでゲームのスタート画面を作っているのですが、パネルが透過されずに困っています。 プログラムソースは import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.*; import java.awt.Font; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; class Start最新版 extends JFrame{ public static void main(String args[]){ Start最新版 frame = new Start最新版("タイトル"); frame.setVisible(true); } Start最新版(String title){ setTitle(title); setBounds(10, 10, 1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setOpaque( false ); ImageIcon icon1 = new ImageIcon("Start.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); p.add(label1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); JButton button1 = new JButton("ゲームを始める"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel n = new JPanel(); n.setOpaque(false); n.setLayout(new BoxLayout(n, BoxLayout.Y_AXIS)); n.add(Box.createRigidArea(new Dimension(290,30))); n.add(button1); となっています。「ゲームを始める」ボタンだけを残して、周りのパネルを透過して画像を表示させたいのですが、うまくいきません!解決方法をご存知の方どうか教えていただきたいです!よろしくお願いします。

  • javaでストップウォッチが上手く作れません

    あるサイトを参考にして作ってみたんですが うまく動いてくれません、多分おかしいところだらけですが どこがダメか教えてもらえるとありがたいです package timeP; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; public class timeC extends JFrame implements Runnable { private JPanel contentPane; private JTextField textField; private Thread th = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { timeC frame = new timeC(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public timeC() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 85); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); JPanel panel_3 = new JPanel(); contentPane.add(panel_3); panel_3.setLayout(new BorderLayout(0, 0)); textField = new JTextField(); panel_3.add(textField, BorderLayout.CENTER); textField.setColumns(10); JPanel panel_2 = new JPanel(); contentPane.add(panel_2); panel_2.setLayout(new BorderLayout(0, 0)); JButton JButtonstart = new JButton(" 開始 "); JButtonstart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th == null ) { th = new Thread ( ); th.start(); } } }); panel_2.add(JButtonstart, BorderLayout.CENTER); JPanel panel_1 = new JPanel(); contentPane.add(panel_1); panel_1.setLayout(new BorderLayout(0, 0)); JButton JButtonstop = new JButton(" 停止 "); JButtonstop.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if ( th != null ){ th = null; } } }); panel_1.add(JButtonstop, BorderLayout.CENTER); JPanel panel = new JPanel(); contentPane.add(panel); panel.setLayout(new BorderLayout(0, 0)); JButton btnNewButton_2 = new JButton("New button"); panel.add(btnNewButton_2, BorderLayout.CENTER); } @Override public void run() { //TODO 自動生成されたメソッド・スタブ int i; while ( th != null ){ i = Integer.parseInt( textField.getText() ); try { Thread.sleep(10000); if ( th == null ) break; } catch ( InterruptedException e ){ break; } textField.setText( Integer.toString( i + 1 ) ); } } }

  • javaのpanelが表示されません

    下記のプログラムを作ったんですが、eclipseで実行するとフレームは表示されますが、空のフレームのような状態で、panelやボタンなどは表示されません。mainとは別のクラスで作成してるからなんでしょうか?よろしくお願いします。 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class Table0 { public static void main(String[] args) { new Frame0(); } } class Frame0{ JFrame frame; JPanel panel; JScrollPane jsp; JTable table; DefaultTableModel dtm; public Frame0(){ frame=new JFrame("table"); frame.setBounds(30, 30, 300, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); table=new JTable(8,5); jsp=new JScrollPane(table); jsp.setPreferredSize(new Dimension(250, 70)); panel=new JPanel(); panel.add(jsp); Container c=frame.getContentPane(); c.add(panel,BorderLayout.CENTER); } }

    • ベストアンサー
    • Java

専門家に質問してみよう