実現したいこと
swingで背景画像の上に別の画像を表示させて、その画像をマウスで操作するプログラムを作りたいです。
現在、背景画像の上に別の画像を表示させようとしています。
1つのクラスにすべて記述すれば、画像が表示されるのですが、下記のようにメインクラスと画像に関する処理を行うクラスに分けると、そもそも背景画像すら表示されません。どこが間違っているか知りたいです。お願いいたします。
該当のソースコード
import javax.swing.*; import java.awt.*; import java.awt.event.*; class test extends JFrame{ //メインクラス public static void main(String args[]){ test frame=new test("タイトル"); frame.setVisible(true); } test(String title){ setTitle(title); setBounds(0, 0,800,600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyComponent component = new MyComponent(); getContentPane().add(component); //MyComponentクラスの画像を追加 } }
import javax.swing.*; import java.awt.*; import java.awt.event.*; class MyComponent extends JLayeredPane { //画像に関するクラス ImageIcon icon1 = new ImageIcon("背景画像.png"); JLabel label1 = new JLabel(icon1); //背景のラベル MyComponent(){ add(label1); //コンテナに背景を加える } }
画像が読み取れないのか、重ね合わせができないのか、どちらでしょうか。JLabelのコンストラクタに固定文字列を設定してみたり、JLabelの.setBackgroundを試してみたりしてくださいな。重ね合わせ処理はまずやめてたとえば、画像だけ表示するラベルをつくってみる。など
あいまいな質問で申し訳ありませんでした。知りたいのは画像の読み取りです。メインクラスに画像に関する処理も書くと画像を読み取れるのですが、クラスを分けると画像が表示できません。どのように改善すればクラスを分けたまま、画像を表示できるか教えていただきたいです。
パッケージがありませんが、この2つのクラスはどのような位置関係でしょうか。
回答1件
あなたの回答
tips
プレビュー