質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

JAVAで自分のフォルダの中に入ってる写真を背景として表示させようとしても表示されない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 972

pancy

score 11

前提・実現したいこと

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;

class gazou_1 extends JFrame{
public static void main(String args[]){
gazou frame = new gazou("タイトル");
frame.setVisible(true);
}

gazou(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel p = new JPanel();

ImageIcon icon1 = new ImageIcon("./syute.png");
ImageIcon icon2 = new ImageIcon("./world.png");

JLabel label1 = new JLabel(icon1);

JLabel label2 = new JLabel();
label2.setIcon(icon2);

p.add(label1);
p.add(label2);

Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);
}
}

試したこと

ほかのサイトのものも試してみたんですが、うまくいかなかったです
[ほかに試したサイト
ほかに試したサイト2
など

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • masaya_ohashi

    2017/05/01 12:44

    使っているIDEはなんですか?EclipseとかNetBeansとか…それとも自分でjavac等でコンパイルしていますでしょうか。それと、ビルドする前の状態のフォルダ構成も書いてください。

    キャンセル

  • pancy

    2017/05/02 09:35

    Eclipse。ビルドする前のフォルダ構成というのは何の事でしょうか。何分独学の故、知識不足なのでもしよろしかったら、教えてもらえますでしょうか。

    キャンセル

  • masaya_ohashi

    2017/05/02 10:36

    Eclipse等を聞いたことがないということは、メモ帳でJavaコードを書いて、コマンドプロンプトでjavacの実行等をされているかと思います。IDEというのは「総合開発環境」のことで、プログラミングの様々なことをサポートしてくれるソフトウェアを指します。ビルド前のフォルダ構成とは、あなたはbinフォルダという名前を作っているのでおそらくそれと対になるsrcというフォルダもあると思います。そちらのことをビルド前のもの、と指しています。

    キャンセル

  • pancy

    2017/05/02 10:43

    srcというフォルダありました。

    キャンセル

回答 1

checkベストアンサー

0

2点おかしい点があります。
1点目ですがおそらくパスが間違っていると思います。
まずはフルパスでの実行をお勧めします。

例 "C:/workspace/syute.png"

その後動作確認ができれば以下を追加してパスを確認してから相対パスに切り替えるとよいと思います。

gazou_1の上に記載

import java.io.File;

gazou_1内に記載

String path = new File(".").getAbsoluteFile().getParent();

System.out.println(path);

2点目ですがコンストラクタ名が違います。
クラス名と同じにする必要があります。
間違い
gazou(String title){ 
正しい
gazou_1(String title){

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/02 09:58

    ありがとうございます。うまく表示されました。
    これから、画像の上にキャラを載せて動かせるようにしていきたいと思います。

    キャンセル

  • 2017/05/02 11:23

    画像の表示サイズを変えるために
    //java.appletパッケージをimport宣言
    //Graphicsクラスはawtパッケージに属しているのでawtパッケージもimport宣言
    import java.applet.*;
    import java.awt.*;
    //Appletクラスを継承
    public class AppletSample17 extends Applet{
    //画像を格納するための変数を用意します。
    Image img;
    //はじめに一度だけ実行するメソッド
    public void init(){

    //Imageクラス型変数に画像データを入れる
    img = getImage(getDocumentBase(),"icon/hoseki.jpg");

    public void paint(Graphics g){

    //画像を表示する
    g.drawImage(img,10,10,64,48,this);
    g.drawImage(img,170,20,128,96,this);
    g.drawImage(img,470,30,192,144,this);
    }

    }
    ・・・・・・・・・・を・・・・・・・・
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;

    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    class gazou extends JFrame{
    public static void main(String args[]){
    String path = new File(".").getAbsoluteFile().getParent();

    System.out.println(path);
    gazou frame = new gazou("~Dream Match~");
    frame.setVisible(true);
    }

    gazou(String title){
    setTitle(title);
    setBounds(100, 100, 1000, 800);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel p = new JPanel();

    ImageIcon icon1 = new ImageIcon("Z:/Java/gazou1/bin/gazou1/syute.png");
    // ImageIcon icon2 = new ImageIcon("Z:/Java/gazou1/bin/gazou1/world.png");

    JLabel label1 = new JLabel(icon1);

    // JLabel label2 = new JLabel();
    // label2.setIcon(icon2);

    p.add(label1);
    // p.add(label2);
    class Applet extends {
    //画像を格納するための変数を用意します。
    Image img;
    //はじめに一度だけ実行するメソッド
    public void init(){

    //Imageクラス型変数に画像データを入れる
    img = getImage(getDocumentBase(),"Z:/Java/gazou1/bin/gazou1/syute.png");
    }
    public void paint(Graphics g){

    //画像を表示する
    g.drawImage(img,10,10,64,48,this);
    g.drawImage(img,170,20,128,96,this);
    g.drawImage(img,470,30,192,144,this);
    }

    }

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.PAGE_END);

    }

    }
    のように貼り付けました。いろいろなサイトを見てみたら多重継承はできないやら何やらと書いてあり、どういうことなのか私なりに調べたのですが解決には至らなかったです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Javaに関する質問
  • JAVAで自分のフォルダの中に入ってる写真を背景として表示させようとしても表示されない