代码之家  ›  专栏  ›  技术社区  ›  Tom

JavaJFrime:不显示图像

  •  1
  • Tom  · 技术社区  · 15 年前

    我试图建立一个显示图像的小框架。

    我的问题是 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 回复  |  直到 15 年前
        1
  •  1
  •   Zak    15 年前

    使用 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
  •  1
  •   camickr    15 年前

    您不应该重写jframe的paint()方法。

    你不需要做定制绘画。只需创建一个ImageIcon并将其添加到jLabel,然后将标签添加到框架中。

    查看上的Swing教程中的部分 How to Use Icons . 如果您确实需要进行自定义绘制,那么本教程还提供了一节关于自定义绘制的内容。