###前提・実現したいこと
javaのswingでGUIについて勉強しています。今、背景に画像を使ったパネルを作り、さらにその上に一回り小さいデフォルトのパネルを作成して表示したいと考えています。
###発生している問題・エラーメッセージ
エラーメッセージはでていませんが、Mainクラスを実行すると大小二つのタブが生成されます。どちらも何も表示されていません。
###該当のソースコード
Java
1package スタート画面; 2 3import java.io.IOException; 4 5import javax.swing.JFrame; 6 7public class Main extends JFrame { 8 9 public Main(){ 10 super("test"); 11 setResizable(false); 12 setDefaultCloseOperation(EXIT_ON_CLOSE); 13 pack(); 14 setVisible(true); 15 } 16 public static void main(String[] args) throws IOException { 17 Main main = new Main(); 18 StartScreen jp = new StartScreen(); 19 main.getContentPane().add(jp); 20 21 } 22}
java
1package スタート画面; 2 3//import java.awt.CardLayout; 4import java.io.IOException; 5 6import javax.swing.ImageIcon; 7import javax.swing.JPanel; 8 9public class StartScreen extends JPanel { 10 private ImageIcon img; 11 //private CardLayout layout = new CardLayout(); 12 private JPanel mainpane; 13 14 public StartScreen() throws IOException { 15 //背景 16 BufferedImage img; 17 try { 18 img = ImageIO.read(new File("p0131_l.jpg")); 19 } catch (Exception e) { 20 e.printStackTrace(); 21 img = null; 22 } 23 //img = new ImageIcon("p0131_l.jpg"); 24 ImagePanel backpane = new ImagePanel(img); 25 backpane.setVisible(true); 26 27 //メインパネル 28 mainpane = new JPanel(); 29 mainpane.setLayout(null); 30 mainpane.setBounds(400, 400, 900, 500); 31 mainpane.setVisible(true); 32 backpane.add(mainpane); 33 } 34}
java
1package スタート画面; 2 3import java.awt.Dimension; 4import java.awt.Graphics; 5import java.awt.Image; 6 7import javax.swing.JPanel; 8 9public class ImagePanel extends JPanel{ 10 private BufferedImage image; 11 /* 12 * コンストラクタ引用(Java Swing Hacks,Joshua Marinacci著) 13 */ 14 public ImagePanel(BUfferedImage image){ 15 this.image = image; 16 Dimension size = new Dimension(image.getWidth(null),image.getHeight(null)); 17 setPreferredSize(size); 18 setMaximumSize(size); 19 setMinimumSize(size); 20 setLayout(null); 21 } 22 public void paintComponent(Graphics g){ 23 g.drawImage(image, 0, 0, null); 24 } 25} 26
StartScreenのフィールドでカードレイアウトがインスタンス化されてるのはいずれデフォルトのパネルに適応しパネルを追加して画面遷移を行いたいと考えているからです。
###補足情報(言語/FW/ツール等のバージョンなど)
作業環境はEclipseです。画像はインポートで取り込み同じプロジェクトファイル内にあります。画像の大きさは1200×1035です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/27 20:15
2017/07/28 03:05