• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java 15パズルを作ったのですが・・・)

Javaで15パズル作成における描画の修正方法とアプレット化の方法

ngsvxの回答

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

まだ解決していないでしょうか? 実際にコンパイル/実行してみましたが、 (1) 問題なくアニメーションしています。 (2) これも問題なく表示されました。   ただ、背景画像がボードより小さいと、画像の不足のマスは灰色でした。  画像のサイズが小さい、あるいは画像が読み込めていないのではないでしょうか

noname#173931
質問者

お礼

回答していただきありがとうございます。 そして、貴重な時間を割いてのコンパイル、確認 ありがとうございました。 この回答を受け、こちらで、確認しましたところ、 ソースコードの背景画像ファイルを"bgimage.jpg" としていたのに対し、 実際の背景画像のファイル名は"bgimage1.jpg" であることが、判明しました。 ソースコードのファイル名を修正し確認したら、 正常に動作してくれました。 貴重な時間を割いての回答、 重ねてありがとうございました。

関連するQ&A

  • SwingのpaintComponent()メソッドについて

     JAVA初心者です、宜しくお願いします。  参考書で、Swingについて以下のようなコメントを見つけました、ただ何故そうなのかの理由を書いていません。  以下の内容はどのような理由からそうなるのでしょうか。  「Swing コンポーネントでは、メソッドpaintは推奨されていません。  paintComponentをプログラムから呼び出してはいけません。描画をしたい場合は、 paintComponent をオーバー ライドしたクラスの repaint() メソッドを呼び出します。  Swing コンポーネント上に描画するには、 描画したいコンポーネントのクラスを継承したクラスで、 メソッド paintComponent(Graphics g) をオーバーライドし、 パラメータで渡された g に対して Graphics クラスのメソッドで描画をします。  オーバーライドした paintComponent の先頭で、このコンポーネントの土台を描画するために、 super.paintComponent(g) を呼び出しておきます。」  宜しくお願いします。

    • ベストアンサー
    • Java
  • ジグソーパズルのHPを作りたい

    ホームページで遊ぶジグソーパズルが好きでサイト巡りをしていましたが 自分のホームページにオリジナルの画像を使ってジグソーパズルを作り皆に遊んでもらえたらいいなと思いました。 しかし、自作でパズルのゲームを作るという知識はないので 良いソフト等がないものかと探しているのですが コレといったのがなくって困っています 私の条件としては  ・自分の好きな画像が取り込める  ・ピースは回転しない(もしくは回転可・不可が選べる)  ・下地に枠が無い・ピースとピースが合うと自動的にくっつきくっついたままになる  ・そこそこの難易度が欲しいのでピース数が多い(いくつ?)  ・できればタイム・元絵が表示される  ・有料のソフトウェアでも可 画像の取り込み自体はオフラインで作成して掲載するような形式でOKです。 専用ソフトやFlashやJavaアプレット?を用いるものがあるようですが良くわかりません よろしくおねがいします。

  • Javaのプログラミング手伝ってください

    以下のソースコードを応用して、添付画像のような数字のかかれた画像を3つ並べてそれを回して7を揃えるというゲームを作りたいのですが全く進みません。どなたか完成させてくださいm(__)m使用する画像のファイル名は「slot1.jpeg」~「slot7.jpeg」です。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class OneSlot extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; final int MAX = 7; Timer timer = new Timer(150 , this); JLabel label= new JLabel("スタートで始まるよ",JLabel.CENTER); JButton[] bt = {new JButton("スタート"),new JButton("ストップ")}; JLabel slot= new JLabel(new ImageIcon("Slot1.jpg"),JLabel.CENTER); ImageIcon[] slot_icon = new ImageIcon[MAX]; int iCount = 0; OneSlot(String title) { super(title); timer.setActionCommand("timer"); setBounds(200, 200, 230, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for(int i = 0;i < slot_icon.length; i++) slot_icon[i] = new ImageIcon("Slot" + (i+1) + ".jpg"); add("North",label); add("Center",slot); JPanel p = new JPanel(); for (int i = 0; i < bt.length;i++) { bt[i].addActionListener(this); p.add(bt[i]); } add("South",p); setVisible(true); } public static void main(String[] args) { new OneSlot("スロットマシン"); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("timer")) { if(++iCount == slot_icon.length) iCount = 0; slot.setIcon(slot_icon[iCount]); } if(e.getSource() == bt[0] && !timer.isRunning()) { label.setText("7が当たりだよ"); timer.start(); } else if(e.getSource() == bt[1] && timer.isRunning()) { if(iCount+1 == MAX) label.setText("やった!!おめでとう"); else label.setText("残念でした"); timer.stop(); } } }

  • Java JFrameにJPanelを・・・

    こんにちは。趣味でプログラミングをしているものです。 さっそくですが、質問させていただきます。 Java で電卓を作っているのですが、 文具店で1000円くらいで販売している電卓を再現したいのですが、 いろいろなボタンの操作はなんとなくわかってきたのですが、 電卓のGUIについて質問させていただきます。 JFrame を継承したクラスに背景の画像を描画し その上に、計算の経過、結果を表示するJPanelを 継承したクラスのインスタンスを 特定の座標に配置したいのですが、 うまくいきません。 以下に自分の作ったコードを載せますので、 どこが悪いのか、教えていただけないでしょうか。 よろしくお願いします。 package test01_frame; import java.awt.*; import javax.swing.*; public class TestFrame extends JFrame { Image bgimage; JPanel jp01; TestFrame() { super(); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); setSize( 384, 576 ); setLocationRelativeTo( null ); bgimage = new ImageIcon( "images/image01.jpg").getImage(); repaint(); //コメントアウトした部分がわからない箇所です。 //jp01 = new JPanel(); //jp01.setPreferredSize( new Dimension( 360, 50 )); //jp01.setBackground(Color.RED); //add( jp01 ); //jp01.setLocation( new Point( 10, 30 )); setVisible( true ); } public void update( Graphics g ) { paint( g ); } public void paint( Graphics g ) { g.drawImage( bgimage, 0, 0, null ); } /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ new TestFrame(); } }

    • ベストアンサー
    • Java
  • 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
  • JLabelとJLabelを結ぶ直線をJComponentとしてカプセル化

    別にJLabelでなくてもよいのですが、JPanel上のJComponentを繋ぐ直線を表すクラスをJComponentを継承したクラスとして扱いたいのですが、どのようにすればよいでしょうか? というのもやりたいことは、JPanel上のJComponentを移動させたときにそれを繋ぐ線も動くとともに、その線上で発生するイベント(たとえばMouseEvent)を処理したいからです。 現段階ではJPanelに直に線を描画し、JPanelと同じ大きさのオフスクリーンに各線の識別IDを色とした線を描画することで、カーソルの位置から当たり判定をするという荒い方法で対処しています。 なんとかこの線をオブジェクととしてカプセル化したいのですが、なにかよい方法はないでしょうか? ピュアJavaで実装したいため、SWT+EMF(+Draw2D)は考えていません。 またそのようなピュアJavaのライブラリがあれば教えてください。

    • ベストアンサー
    • Java
  • リスナについて

    Java を勉強している者です GUIライブラリである awt,swing のリスナについての質問です awt,swing では リスナというイベント処理用のクラスと処理内容を用意して その部品に、イベント用のリスナを登録することによって、コールバックする仕組みになっていると思います。 リスナとイベントの対応ですが、マウスリスナやキーリスナ、ボタンを押したときに対応するアクションリスナ などがありますが、多用する再描画に関しての paintListener がありません 再描画に対応する場合、常に部品を継承して、paintcomponent をオーバーライドして記述しなければなりません 再描画も重要なイベントだと思うのですがなぜリスナが用意されてないのか。 JFrame j = new JFrame(); j.addPaintListener( new PaintAdapter { void onPaint() { ... } } のように描画処理を後付できないかという質問です。 できるようならサンプルのコードを教えてください。 またpaintリスナが用意されない理由があればこれも教えていただけると幸いです。

    • ベストアンサー
    • Java
  • awt+joglでの3D+2D描画に関して

    joglを使って簡単なポリゴンにテクスチャを貼り付けて、 マウスイベントによって回転・移動を行えるプログラムを 作っています。操作を始めるとマウスカーソルの代わりに 独自の画像をマウスカーソルが表示されていた部分に 表示されるようにしたいと考えています。 質問は、マウスカーソルの代わりに表示させる画像の 表示方法についてです。 開発環境 SDKとして、eclipse日本語化プロジェクトのpleiadesの バージョン3.5の最新のものを使用しています。(jreあり) PCは、自作でスペックは以下の通りです。 CPU:penD940 3.2GHz メモリ:2GB HD:320GB G/B:GForce6600 質問の意図をわかりやすくするために簡単な説明と これまでの進展を説明したいと思います。 まず、joglを使用する方法としてGLCanvasとGLJPanelの どちらかにGLEventListenerをaddして利用する方法があると 思います。2Dの描画を加える場合、たとえば、GLCanvasを継承した クラスを独自に作成し、paintメソッドをオーバーライドして 3D描画に2D描画を上書きする方法があると思います。この方法だと、 GLCanvasではダブルバッファが有効ではないため、非常にちらついた 表示になってしまいます。GLJPanelを利用すればその問題が解消 されますが、残念なことに処理が重くなり操作性が著しく落ちてしまいます。 そこで、GLCanvasをベースにGLPbufferクラスを利用してjoglの描画を オフスクリーンに描画するというように独自にダブルバッファの 処理を作成しました。この方法では、GLJPanelよりも多少軽く 動作しているものの、残念ながら操作性が維持できる処理速度を 確保することができませんでした。 おそらく、問題点はオフスクリーンとして使っているBufferedImageの 書き換え時の処理に時間がかかっているものと推測しました。 そこで、さらにBufferStrategyクラスも利用してみましたが、 GLPbufferの描画をbufferedImageに書き込む処理でつまずいてしまう ようであまり効果がありませんでした。 joglでポリゴンにテクスチャを貼り付けるということで擬似2D的なことは 可能ですが、作っているプログラムの特性上、画像サイズの管理やマウス ポインタの位置との連動を行うことになるため複雑になるのは避けたいです。 というところで、現在こんな具合で作業を進めて参りました。 質問内容としてましては、上記以外の方法で、 「3D描画と2D描画を組み合わせて軽快な処理ができる方法」 をご教授していただきたいです。 何卒よろしくお願いします。

  • 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.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; public class Mati extends JFrame{ public static void main(String[] args){ Mati frame = new Mati(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10,650,650); frame.setTitle("街"); frame.setVisible(true); JPanel h = new JPanel(); h.setOpaque(false); ImageIcon icon1 = new ImageIcon("Mati.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); h.add(label1); } Mati(){ JButton button1 = new JButton("宿屋"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button2 = new JButton("道具屋"); button2.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button3 = new JButton("武器屋"); button3.setFont(new Font("Mairyo", Font.PLAIN, 30)); JButton button4 = new JButton("街を出る"); button4.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel p = new JPanel(); p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); p.add(Box.createRigidArea(new Dimension(10,30))); p.add(button1); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button2); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button3); p.add(Box.createRigidArea(new Dimension(5,8))); p.add(button4); getContentPane().add(p, BorderLayout.CENTER); } } ソースはこのようになっています。これからどうすれば背景画像が表示されるか教えていただきたいです。 よろしくお願いします。

  • iアプリ作成 画像を描画できない

    最初に4つのメニューを表示し、メニュー1を選ぶとある画像を表示し、メニュー2を選ぶとまた別の画像を表示する様なiアプリを作成しています。 その作り方が、メニュー1を選ぶと Manu1Canvas c = new Menu1Canvas(); Display.setCurrent(c); c.exe(); という感じでMenu1Canvasクラスのexe()の内容を実行し画像を描画しています。この時Menu1CanvasはCanvasを継承しておりpaint()メソッドを使い描画をしています。 メニュー2を選んだ場合も同じように、Canvasを継承したクラスで画像を描画しています。 このようにそれぞれのメニュー4つにクラスを作り、その4つのクラスにCanvasを継承させpaint()メソッドを使い画像を描画するという処理内容はおかしいのでしょうか?このようにやるとなぜか画面を切り替える時にDojaエミュレータが終了してしまいます。

    • ベストアンサー
    • Java