JApplet paintcomponentでの画像参照方法
JFrameでJPanelを実現するアプリケーションを作成していて、それをJAppletで応用しようとしています。
しかし、画像だけが表示されませんでした。JAppletを継承したクラスでは、image型でデータを宣言してgetCodeBase()でURLを取得してg.drawimageで出力できるそうですが、コンテナを用いて他の、JAppletを継承していないクラスからg.drawImageで画像を出せるようにできませんか?
java
1//import省略します 2public class Mygame00 extends JApplet{ 3 Container c ; 4 GameCtrl g; 5 public Mygame00(){ 6 setTitle("game"); 7 c = getContentPane(); 8 c.setLayout(null); 9 10 g = new GameCtrl( );//ゲームコントロールを呼び出す 11 g.setBounds(10,10,1200,800); 12 g.setBackground(Color.WHITE); 13 c.add(g); 14 } 15 public void init() { 16 setSize(1260,870); 17 JFrame w = new Mygame00(); 18 w.setVisible(true); 19 w.getRootPane(); 20 w.setBounds(10, 10, 1200, 800); 21 22 } 23} 24
↓↓↓呼び出されるゲームコントロールクラス(一部)
java
1 2public GameCtrl (){ 3 t = new Thread(this); 4 t.start(); 5 bo = new Bo(); 6 charaL = new CharaL(); 7 enemy = new Enemy(); 8 hou = new Hou(); 9 hp = new HP(); 10 inseki = new INSEKI(); 11 hh = new int[][]{ 12 {25,440,410,380,350,320}, 13 {25,720,750,780,810,840} 14 };setFocusable(true); 15 addKeyListener(this); 16 addMouseListener(this); 17 addMouseWheelListener(this);} 18 19public void paintComponent( Graphics g){ 20 super.paintComponent(g); 21 charaL.charaLPaint(g); 22 Enemy.EnemyPaint(g); 23 bo.BoPaint(g); 24 CharaL.xy_calc(); 25 CharaL.G(); 26 Enemy.xy_calc(); 27 Enemy.G(); 28 Hou.xy_calc(); 29 INSEKI.xy_calc();}
といった構造になっています。(なお、このしたにKeyListenerとかがオーバーライドされています)
発生している問題・エラーメッセージ
JAppletを継承したクラスでしか画像のURLを取得できないために、コンポーネントの中で画像が表示されない
該当のソースコード
↓↓例えばBOクラスではこのようにしています。
java
1import java.awt.Graphics; 2import java.awt.Image; 3import java.util.Random; 4 5import javax.swing.ImageIcon; 6 7public class Bo implements MyData{ 8 ImageIcon boIcon; 9 Image boIm; 10 Random r; 11 public Image insekii; 12 static int [][] bo; 13 public Bo(){ 14 r = new Random(); 15 boIcon = new ImageIcon("./Gazo00/bo.png"); 16 boIm = boIcon.getImage(); 17 bo = new int[][]{ 18 {100,275,600,610}, 19 {300,475,500,510}, 20 {600,775,300,310}}; 21 22 23 } 24 public void BoPaint( Graphics g ){ 25 for(int i = 0;i<3;i++) 26 g.drawImage(insekii,bo[i][0],bo[i][2],null); 27 } 28 static void Bo_calc(){ 29 for(int i = 0;i<3;i++) 30 {bo[i][2]+=3;bo[i][3]+=3;} 31 } 32 33}
試したこと
JApplet継承クラスに移行しようとしようとしてみたり(何を移すべきかわからず断念)、JAppletやAppletについて調べてみましたがだめでした。なお、秒数計算といった画像出力以外の処理はほとんどできています。
補足情報(FW/ツールのバージョンなど)
Eclipse Java EE IDE for Web Developers.
Neon.3 Release (4.6.3)
回答1件
あなたの回答
tips
プレビュー