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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

254閲覧

JavaのJFrameについて質問です。

Helper

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/07/05 01:51

編集2022/01/12 10:55

Javaについて質問です。JFrameの1つのJPanelに、二つのJLabel(ImageIcon)を追加したのですが、この画像どうしを重ねて表示したいんですけど、方法を30分ぐらい画像どうしを重ねる方法を調べても出てこなくて、質問することにしました。(外部URLなどは許可を取らないとかもなのではらないことにしました)下のプログラムがこんな感じが分かりやあすいかなぁ?て思いながらコピペしたプログラムです。(スパゲッティーソース)このプログラムについてわからないことがあったら、質問を質問で返してください。

java

1test.java 2 3 4import java.awt.Color; 5import java.awt.event.KeyEvent; 6import java.awt.Font; 7import java.awt.Image; 8import java.awt.image.BufferedImage; 9import java.awt.*; 10import java.awt.image.*; 11import java.io.File; 12import java.io.IOException; 13import javax.imageio.ImageIO; 14import javax.swing.ImageIcon; 15import javax.swing.JFrame; 16import javax.swing.JLabel; 17import javax.swing.JPanel; 18import java.util.Timer; 19import java.util.TimerTask; 20 21public class test extends JFrame 22{ 23 JLabel jlMain; 24 JLabel jlMsg; 25 JLabel jlChild; 26 JLabel jlChild2; 27 JLabel jlImage2; 28 JPanel jpChild2; 29 Timer timer; 30 Timer timeer; 31 BufferedImage biMonster; 32 BufferedImage biPlayer; 33 34 int countdown = 4; 35 int Player_HP = 100; 36 int Bot_HP = 100; 37 int Time = 60; 38 39 public test() throws IOException 40 { 41 File file = new File("background.png"); //ファイルを開く 42 biMonster = ImageIO.read(file); //画像全体を読み込む 43 File filep = new File("player.png"); //ファイルを開く 44 biPlayer = ImageIO.read(filep); //画像全体を読み込む 45 setBounds(320, 180, 1280, 720); // フレームサイズを設定 46 setDefaultCloseOperation(EXIT_ON_CLOSE); // 閉じるボタン有効化 47 add(createBasePanel()); // 親パネルを作成し、フレームに貼り付け 48 setVisible(true); // フレームを表示状態へ 49 setLocationRelativeTo(null); 50 51 enableEvents(java.awt.AWTEvent.KEY_EVENT_MASK); // キー入力の有効化 52 } 53 54 protected void processKeyEvent(KeyEvent e) 55 { 56 if(e.getID() == KeyEvent.KEY_PRESSED) 57 { 58 System.out.println("キー"+e.getKeyCode()+"が押されたよ"); 59 60 if(e.getKeyCode() == KeyEvent.VK_1) { 61 jpChild2.removeAll(); 62 addPicture(); 63 addPicturePlayer(); 64 jlMsg.setText("ここでプレイヤーを背景に重ねる"); 65 } 66 if(e.getKeyCode() == KeyEvent.VK_ESCAPE) { 67 System.exit(0); 68 } 69 } 70 } 71 72 /* 73 * 基盤パネルを作成 74 */ 75 JPanel createBasePanel() throws IOException 76 { 77 JPanel jp = createPanel(Color.GREEN); 78 79 Font f = new Font(Font.MONOSPACED, 80 Font.BOLD, 81 64); 82 83 // レイアウト2行目 84 // パネルを作成し、親パネルに貼り付け 85 jpChild2 = createPanel(Color.RED); 86 jp.add(jpChild2); 87 88 89 // 選択肢をパネルに貼り付け 90 jlMain = new JLabel("1(キーボードのボタン)"); 91 jlMain.setFont(f); 92 jlMain.setPreferredSize(new java.awt.Dimension(900, 300)); 93 jpChild2.add(jlMain); 94 95 // 区切り線 96 JPanel jpHR = createPanel(Color.WHITE); 97 jpHR.setPreferredSize(new java.awt.Dimension(1200, 4)); 98 jp.add(jpHR); 99 100 // レイアウト3行目 101 // ラベルを作成し、親パネルに貼り付け 102 jlMsg = new JLabel("number for select"); 103 jlMsg.setFont(f); 104 jlMsg.setForeground(new Color(255, 128, 0)); 105 jp.add(jlMsg); 106 return(jp); 107 } 108 109 /* 110 * モンスターをパネルに加えます。 111 */ 112 void addPicture() 113 { 114 java.util.Random r = new java.util.Random(); 115 // 敵出現 116 int e = 1; 117 // 敵グラフィック表示 118 int cw = 1300; //セルサイズ・幅 119 int ch = 800; //セルサイズ・高さ 120 int sw = 1200; //表示サイズ・幅 121 int sh = 590; //表示サイズ・高さ 122 123 for(int i=0; i<e; i=i+1){ 124 putBackground(jpChild2, biMonster, 0, 0, cw, ch, sw, sh); 125 //モンスター 0-0 表示 126 } 127 128 129 130 // メッセージ表示 131 132 } 133 134 void addPicturePlayer() 135 { 136 java.util.Random r = new java.util.Random(); 137 // 敵出現 138 int e = 1; 139 // 敵グラフィック表示 140 int cw = 16; //セルサイズ・幅 141 int ch = 27; //セルサイズ・高さ 142 int sw = 30; //表示サイズ・幅 143 int sh = 50; //表示サイズ・高さ 144 145 for(int i=0; i<e; i=i+1){ 146 putPlayer(jpChild2, biPlayer, 0, 0, cw, ch, sw, sh); 147 //モンスター 0-0 表示 148 } 149 150 151 152 // メッセージ表示 153 154 } 155 156 static JPanel createPanel(Color c) 157 { 158 JPanel jp = new JPanel(); 159 jp.setBackground(c); 160 return(jp); 161 } 162 163 static void putBackground(JPanel jpChild2, BufferedImage biMonster, int x, int y, int cw, int ch, int sw, int sh) 164 { 165 BufferedImage bs = biMonster.getSubimage(cw*x, ch*y, cw, ch); 166 Image im = bs.getScaledInstance(sw, sh, Image.SCALE_DEFAULT); 167 ImageIcon ii = new ImageIcon(im); //JLabel用に型変換 168 JLabel jlImage = new JLabel(ii); //画像部品を作成 169 jlImage.setSize(sw, sh); //画像サイズを設定 170 jpChild2.add(jlImage); //画像を貼り付け 171 } 172 173 static void putPlayer(JPanel jpChild2, BufferedImage biPlayer, int x, int y, int cw, int ch, int sw, int sh) 174 { 175 BufferedImage bs2 = biPlayer.getSubimage(cw*x, ch*y, cw, ch); 176 Image im2 = bs2.getScaledInstance(sw, sh, Image.SCALE_DEFAULT); 177 ImageIcon ii2 = new ImageIcon(im2); //JLabel用に型変換 178 JLabel jlImage2 = new JLabel(ii2); //画像部品を作成 179 jlImage2.setSize(sw, sh); //画像サイズを設定 180 //jlImage2.setLocation(100, 100); 181 jpChild2.add(jlImage2); //画像を貼り付け 182 } 183}

java

1teststart.java 2 3 4public class teststart 5{ 6 public static void main(String[] args) throws java.io.IOException 7 { 8 System.out.println("起動しました。"); 9 new test(); 10 } 11}

コンパイル:javac *.java
実行:java teststart

背景:background.png
プレイヤー:player.png
↑は、適当にダウンロードした画像ファイルの名前を変えてフォルダに入れてください。

つまり、jpChild2の中にある、jlImageとjlImage2を重ねて表示したいということです。なるべく説明と改善した文を記載して回答してくださると助かります。よろしくお願いいたします。( `・∀・´)ノヨロシク

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/07/05 01:54

調べた内容・記事URLなどを幾つか代表的なもので結構ですので提示してください。そして、まずエラーをなくすところからではないでしょうか? >このプログラムはerr出ます
Helper

2018/07/05 01:56

全体のプログラムではerrが出ないのですが、わかりやすいかなぁ?って書いたプログラムがerr出ます。
m.ts10806

2018/07/05 01:59

回答者が再現確認できないコードを提示されても回答はのぞめませんよ。ミニマムコードであっても「現象が再現するもの(本来エラーがないのであればエラーがでないもの)」が必要です。正直かなり横柄な態度が垣間見える質問内容なのであまり回答は期待できないかもしれませんね。
Helper

2018/07/05 02:00

全体のプログラムをGitHubとかに貼って送りますね!
m.ts10806

2018/07/05 02:14

「分かりやあすいかなぁ」でインデント全くつけてないソース貼り付けられても困りますし、外部サービスはもっと困りますね。質問は編集できるので、必要な情報を追記して、質問本文を調整してください。
Helper

2018/07/05 02:31

初心者なので、その必要な情報を何か教えてもらえますか?
m.ts10806

2018/07/05 02:36

1つ目、2つ目のコメントに書いていますが何が分かりませんでしたか?
Helper

2018/07/05 02:43

ありがとうございます 記載したいと思います
Helper

2018/07/05 03:22

更新しました!
m.ts10806

2018/07/05 03:35

この内容だと「作業依頼」として捉えられますけど・・?
m.ts10806

2018/07/05 03:36

参考にした記事が一般に公開されているものであれば提示するのは構いません。「コピペコード」でしたら何を元にこのコードを書いたのか分からないとアドバイスしようがありません。コードもそうですが自己判断で削るのはNGです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問