【问题标题】:Java JFrame: Image not displayedJava JFrame:图像未显示
【发布时间】:2011-04-02 05:02:50
【问题描述】:

我正在尝试构建一个显示图像的小框架。

我的问题是在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);
     }

   }
}

【问题讨论】:

    标签: java image awt jframe


    【解决方案1】:

    在您的代码中使用 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。

    【讨论】:

    • 还是什么都没有。它甚至没有执行:(
    【解决方案2】:

    您永远不应该覆盖 JFrame 的 paint() 方法。

    您无需进行自定义绘画。只需创建一个 ImageIcon 并将其添加到 JLabel,然后将标签添加到框架。

    查看 How to Use Icons 上的 Swing 教程部分。如果您确实需要进行自定义绘画,那么本教程还有一个关于自定义绘画的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多