开发者

Java JFrame: Image not displayed

Im trying to build a small frame that displays an image.

My problem is that in the paint(Graphics g) method, the g.drawImage is executed, but nothing is shown on my RLFrame.

Any thoughts / tips?

Thanks in advance.

Here's the code

public class RLFrame extends JFrame{

 Image img;
 开发者_开发技巧public RLFrame(String title){
  super("testing");
 }
 public  void run(){
  MediaTracker mt = new MediaTracker(this);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setSize(400, 400);

  this.img = Toolkit.getDefaultToolkit().getImage("maps/23bis.ppm");
  mt.addImage(this.img, 1, 100, 100);
  this.setVisible(true);
 }


 public void paint(Graphics g){
  System.out.println("Paint");
     if(img != null){
      System.out.println("draw");
       g.drawImage(img, 300,  300, this);
     }
     else
     {
       g.clearRect(0, 0, getSize().width, getSize().height);
     }

   }
}


Use paintComponent(Graphics g) instead of paint(Graphics g) in your code. Something like

protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        System.out.println("Paint");
        if (img != null) {
            System.out.println("draw");
            g.drawImage(img, 300, 300, this);
        }
        else
        g.clearRect(0, 0, getSize().width, getSize().height);
 }


Add the image to a JPanel, then add that JPanel instance to your RLFrame.


You should never overrid the paint() method of a JFrame.

There is no need for you to do custom painting. Just create an ImageIcon and add it to a JLabel, then add the label to the frame.

Check out the section from the Swing tutorial on How to Use Icons. If you really need to do custom painting then the tutorial also has a section on custom painting.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜