gpt4 book ai didi

java - 在 Java Swing 应用程序中显示背景图像

转载 作者:行者123 更新时间:2023-11-30 05:54:00 34 4
gpt4 key购买 nike

我阅读了关于我的主题的几个答案,但我没有找到我的答案。我想要我的 java 代码的背景。我这里指的只是放图片的代码但它不起作用。

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

最佳答案

您在哪里找到该代码?如果来自教程,请丢弃它,因为它会教给你非常坏的习惯。例如,...

  • 永远不想从 paint(...)paintComponent(...) 中读取图像文件(或任何文件) 方法。其一,为什么每次重新绘制程序时都要重新读取文件,而您可以读取一次并完成它。但更重要的是,您希望您的 paint/paintComponent 方法精简、平均并尽可能快,因为如果不是这样,您的绘图又慢又笨拙,用户会认为您的程序又慢又笨拙。
  • 在 JPanel 的 paintComponent(...) 方法而不是它的 paint(...) 方法中进行绘图。当您在绘画中绘制时,您将失去 Swing 免费提供的所有双缓冲,并且您的动画将变得不稳定。
  • 首先调用 super 的 paintComponent(...) 方法。
  • 阅读官方Painting with Swing tutorials关于如何在 Swing 中进行图形和绘图,正如我从上面的代码中猜测的那样,您还没有完成这个最基本的步骤。你不会后悔这样做的。
  • 此外,您似乎正在尝试将 url 作为文件加载,我认为这不会起作用。请改用 URL 对象。

例如……

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

关于java - 在 Java Swing 应用程序中显示背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846732/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com