QA@IT
«質問へ戻る

質問を投稿

drawImageとJLabelを同時に使うとJLabalが表示されない

javaで簡単なノベルゲームを作ろうと思ったのですが、drawImageで背景を作ってJLabelでテキストを表示させたいのですが、JLabelが表示されません。初心者かつ初投稿なので汚いかもしれませんがよろしくお願いします。

package demo;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

public static void main(String[] args) {
    JFrame Frame=new JFrame("DEMO");
    Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Frame.setSize(1200,800);
    Frame.setLocationRelativeTo(null);


    JPanel spane = Spane.spane();
    spane.setBounds(0,0,1200,800);


    JPanel contentPane = (JPanel)Frame.getContentPane();
    Frame.setLayout(null);
    contentPane.add(spane);


    Frame.setVisible(true);

}

}

public MyPanel() {
    //上
    ImageIcon icon01 = new ImageIcon("01.png");
    pic01 = icon01.getImage().getScaledInstance((int) (icon01.getIconWidth() * 0.5), -1,Image.SCALE_SMOOTH);
    ImageIcon icon02 = new ImageIcon("02.png");
    pic02 = icon02.getImage().getScaledInstance((int) (icon02.getIconWidth() * 0.5), -1,Image.SCALE_SMOOTH);
    back = getToolkit().getImage("haikei.png");

    //下
    label01 = new JLabel("画面1");
    label01.setFont(new Font("MS ゴシック",Font.PLAIN,50));
    label01.setBounds(0,0,200,80);


    this.setLayout(null);
    this.add(label01);

    addMouseListener(this);
}


// Paint
 public void paint(Graphics g)
  {  
      g.drawImage(back,0,0,1200,600,this);
      if(x==0){
      g.drawImage(pic01,50,50,this);
      }else{
          g.drawImage(pic02,50,50,this);
      }
  }

 //マウスイベント
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {
    q++; x=q%2;
    i++;
    label01.setText(i+1+"clicks");
    repaint();
}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}

}
DEMO.bmp

javaで簡単なノベルゲームを作ろうと思ったのですが、drawImageで背景を作ってJLabelでテキストを表示させたいのですが、JLabelが表示されません。初心者かつ初投稿なので汚いかもしれませんがよろしくお願いします。

package demo;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main {

	public static void main(String[] args) {
		JFrame Frame=new JFrame("DEMO");
		Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Frame.setSize(1200,800);
		Frame.setLocationRelativeTo(null);
		
		
		JPanel spane = Spane.spane();
		spane.setBounds(0,0,1200,800);
		
		
		JPanel contentPane = (JPanel)Frame.getContentPane();
		Frame.setLayout(null);
		contentPane.add(spane);
		
		
		Frame.setVisible(true);

	}

}

	public MyPanel() {
		//上
		ImageIcon icon01 = new ImageIcon("01.png");
		pic01 = icon01.getImage().getScaledInstance((int) (icon01.getIconWidth() * 0.5), -1,Image.SCALE_SMOOTH);
		ImageIcon icon02 = new ImageIcon("02.png");
		pic02 = icon02.getImage().getScaledInstance((int) (icon02.getIconWidth() * 0.5), -1,Image.SCALE_SMOOTH);
        back = getToolkit().getImage("haikei.png");
        
        //下
        label01 = new JLabel("画面1");
		label01.setFont(new Font("MS ゴシック",Font.PLAIN,50));
		label01.setBounds(0,0,200,80);
		
		
	    this.setLayout(null);
		this.add(label01);

		addMouseListener(this);
	}
	
	
	// Paint
	 public void paint(Graphics g)
	  {  
	      g.drawImage(back,0,0,1200,600,this);
	      if(x==0){
	      g.drawImage(pic01,50,50,this);
	      }else{
	    	  g.drawImage(pic02,50,50,this);
	      }
	  }

	 //マウスイベント
	public void mouseClicked(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {
		q++; x=q%2;
		i++;
		label01.setText(i+1+"clicks");
		repaint();
	}
	public void mouseReleased(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
}
![DEMO.bmp](https://qa-atmarkit-image.s3.amazonaws.com/uploads/attached_image/image/267/DEMO.bmp)