如何设置在Eclipse赫利俄斯的JFrame或JPanel的背景图片(How to set JFr

2019-09-28 20:01发布

我GOOGLE了一下,发现的代码:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageTest {

  public static void main(String[] args) {
    ImagePanel panel = new ImagePanel(new ImageIcon("background.png").getImage());

    JFrame frame = new JFrame();
    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
  }
}

class ImagePanel extends JPanel {

  private Image img;

  public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
  }

  public ImagePanel(Image img) {
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);
  }

  public void paintComponent(Graphics g) {
    g.drawImage(img, 0, 0, null);
  }
}

这为我工作,当我创建ImageTest.java文件,并把background.png在同一个文件夹中。

但是,当我与图像一起粘贴在Eclipse IDE(默认包)相同的代码,那么它不设置图片为背景。 其实这没有找到图片,这是什么原因。

我试图让他们都在同一个package pack; 即使如此,它没有找到图像,所以没有输出。

我试图打开工作区>项目文件夹>战争> WEB-INF>类然后编译从CMD程序。 不过它并不显示。

我不知道是什么问题。 任何人都知道任何解决方案是最受大家欢迎。

提前致谢。

直接设置背景到帧也欢迎...

我所做的这一切使用代码,但是当这将是工作的话,我会转移到窗口建设者GUI。 所以,将你的帮助会在窗口建设者的工作也?

Answer 1:

..new ImageIcon("background.png")..  

这是装载提供没有反馈1的图像的笨(但共同)的方式。

你很可能会发现, background.png不再是一个文件,但现在一个Jar的一部分。 在这种情况下,方式来访问它是利用URL从得到的Class.getResource()

  1. 载入图像聪明的办法是使用ImageIO ,这将引发有益和翔实的例外如果图像无法加载。


Answer 2:

这是不是真的回答你的问题,但因为答案已经接受了我算了一下,地狱,你可能要采取偷看什么。

这个类可以像JPanel中使用它。 它将巴掌面板的背景图像,并且将调整的图像作为该帧被重新调整大小。

public class JPanelWithBackground extends JPanel { 
Image imageOrg = null; 
Image image = null; 
{ 
addComponentListener(new ComponentAdapter() { 
    public void componentResized(ComponentEvent e) { 
        int w = JPanelWithBackground.this.getWidth(); 
        int h = JPanelWithBackground.this.getHeight(); 
        image = w>0&&h>0?imageOrg.getScaledInstance(w,h,  
                java.awt.Image.SCALE_SMOOTH):imageOrg; 
        JPanelWithBackground.this.repaint(); 
    } 
}); 
} 
public JPanelWithBackground(Image i) { 
  imageOrg=i; 
  image=i; 
  setOpaque(false); 
} 
public void paint(Graphics g) { 
  if (image!=null) g.drawImage(image, 0, 0, null); 
  super.paint(g); 
} 
} 

使用例:

Image image = your image 
JFrame f = new JFrame(""); 
JPanel j = new JPanelWithBackground(image); 
j.setLayout(new FlowLayout()); 
j.add(new JButton("YoYo")); 
j.add(new JButton("MaMa")); 
f.add(j); 
f.setVisible(true); 


文章来源: How to set JFrame or JPanel Background Image in Eclipse Helios