Java JFrame: изображение не отображается - PullRequest
1 голос
/ 22 августа 2010

Я пытаюсь создать небольшую рамку, которая отображает изображение.

Моя проблема в том, что в методе paint(Graphics g) выполняется g.drawImage, но на моем RLFrame ничего не отображается.

Есть мысли / советы?

Заранее спасибо.

Вот код

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);
     }

   }
}

Ответы [ 2 ]

1 голос
/ 22 августа 2010

Вы никогда не должны переопределять метод paint () JFrame.

Нет необходимости рисовать на заказ.Просто создайте ImageIcon и добавьте его в JLabel, затем добавьте метку к фрейму.

Ознакомьтесь с разделом из учебника по Swing на Как использовать значки .Если вам действительно нужно рисовать на заказ, то в учебнике также есть раздел, посвященный пользовательскому рисованию.

1 голос
/ 22 августа 2010

Используйте paintComponent(Graphics g) вместо paint(Graphics g) в вашем коде. Что-то вроде

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);
 }


Добавьте изображение в JPanel, затем добавьте этот экземпляр JPanel в свой RLFrame.

...