我需要为java桌面应用程序设置背景图像

时间:2013-05-09 17:24:51

标签: java swing jpanel background-image paintcomponent

我不知道怎么做,而且没有背景图片属性。我研究了答案,但我能找到的只是在面板中设置一个带有空布局的标签图标。这有效,我的形象就在那里,但它只覆盖了一个文本字段。我可以更改此标签的Z值吗?我没有看到“向后移动”选项,如果有的话。

1 个答案:

答案 0 :(得分:1)

这可以解决您的问题:

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;
import javax.swing.SwingUtilities;

public class TestImage {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                ContentPane panel = new ContentPane();
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.add(panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

    private static class ContentPane extends JPanel {
        BufferedImage image = null;

        public ContentPane() {
            try {
                String pathToImage = "C:/Users/Branislav/Pictures/sun.jpg";
                image = ImageIO.read(new File(pathToImage));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(image, 0, 0, null);
        };

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(image.getWidth(), image.getHeight());
        }
    }
}

基本上,我在JPanel(ContentPane)上设置了图片。此外,JPanel的大小取决于图片的大小(至少在这种情况下)。

问候。