将图像设置为前端Java中的前景保持组件
我有一个JPanel,它包含几个J组件,问题是如果我用下面的代码设置一个背景图像,它覆盖了屏幕截图显示的所有组件,我如何修复它将图像设置为前端Java中的前景保持组件,java,Java,我有一个JPanel,它包含几个J组件,问题是如果我用下面的代码设置一个背景图像,它覆盖了屏幕截图显示的所有组件,我如何修复它 private ImageIcon imagen; private Image camiones; public PanelInicio(){ imagen = new ImageIcon("imagenes/imagenprincipal.jpg"); camiones=imagen.getImage(); } public void paint(
private ImageIcon imagen;
private Image camiones;
public PanelInicio(){
imagen = new ImageIcon("imagenes/imagenprincipal.jpg");
camiones=imagen.getImage();
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(camiones, 0, 0, this.getWidth(), this.getHeight(), this);
}
截图:
-无背景的JPanel
-JPanel没有背景(唯一可见的组件是JTextField,因为它得到了关注)我一直很幸运地使用它在内容面板上创建背景图像;我注意到我的类重写了paintComponent(),而你的类重写了paint()。不知道这是不是不同
class ImageBackgroundPanel extends JPanel {
BufferedImage image;
ImageBackgroundPanel(BufferedImage image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
}
}
public class Gui extends JFrame
{
ImageBackgroundPanel content;
public Gui()
{
BufferedImage img = null;
try {
img = ImageIO.read(new File(<path to the file "imagenprincipal.jpg">));
} catch (IOException e) {
}
content = new ImageBackgroundPanel(img);
.
.
class ImageBackgroundPanel扩展了JPanel{
缓冲图像;
ImageBackgroundPanel(BuffereImage图像){
这个图像=图像;
}
@凌驾
受保护组件(图形g){
超级组件(g);
g、 drawImage(图像,0,0,this);
}
}
公共类Gui扩展JFrame
{
图像背景面板内容;
公共图形用户界面()
{
BuffereImage img=null;
试一试{
img=ImageIO.read(新文件());
}捕获(IOE异常){
}
内容=新图像背景面板(img);
.
.
我认为:“分层窗格[…]支持对其他组件进行Z排序”,可能会有所帮助。