首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java应用程序中显示背景图像

在Java应用程序中显示背景图像
EN

Stack Overflow用户
提问于 2012-03-23 21:33:11
回答 1查看 4K关注 0票数 2

我读了几个关于我的题目的答案,但我没有找到答案。我想要一个我的java代码的背景。我在这里所指的只是把图像的代码,但它不工作。

代码语言:javascript
复制
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class background extends JFrame {
    private Container c;
    private JPanel imagePanel;

    public background() {
        initialize();
    }

    private void initialize() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        c = getContentPane();
        imagePanel = new JPanel() {
            public void paint(Graphics g) {
                try {
                    BufferedImage image = ImageIO.read(new File("http://www.signe-zodiaque.com/images/signes/balance.jpg"));
                    g.drawImage(image, 1000, 2000, null);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        imagePanel.setPreferredSize(new Dimension(640, 480));
        c.add(imagePanel);
    }
EN

回答 1

Stack Overflow用户

发布于 2012-03-23 21:35:39

你在哪里找到密码的?如果从一个教程,请放弃它,因为它是教你非常坏的习惯。比如说..。

  • 您永远不希望从paint(...)paintComponent(...)方法中读取图像文件(或任何文件)。首先,为什么每次重新绘制程序时都让程序在一个文件中重新读取,而您可以读取它一次并完成它。但是更重要的是,您希望您的油漆/油漆组件方法是精益的、平均的和尽可能快的,因为如果没有,并且您的绘图是缓慢的,那么用户会认为您的程序是慢的和快的。
  • 在JPanel的paintComponent(...)方法中进行绘图,而不是使用它的paint(...)方法。当你画画时,你会失去所有双缓冲的秋千提供的免费和你的动画将是不爽。
  • 首先调用super的paintComponent(...)方法。
  • 阅读关于如何在Swing中绘制图形和绘图的官方带秋千教程的绘画,我从上面的代码中猜测,您还没有完成这个最基本的步骤。你不会后悔的。
  • 此外,您似乎是试图加载一个url作为一个文件,我不相信将无法工作。使用URL对象代替。

例如..。

代码语言:javascript
复制
public class ZodiacImage extends JPanel {
   private static final String IMG_PATH = "http://www.signe-zodiaque.com/" +
        "images/signes/balance.jpg";
   private BufferedImage image;

   public ZodiacImage() {
      // either read in your image here using a ImageIO.read(URL)
      // and place it into the image variable, or else
      // create a constructor that accepts an Image parameter.
   }

   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      if (image != null) {
         // draw your image here. 
      }
   }

   @Override  //if you want the size to match the images
   public Dimension getPreferredSize() {
      if (image != null) {
         return new Dimension(image.getWidth(), image.getHeight());
      }
      return super.getPreferredSize();
   }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9846732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档