如何为frame窗口设置背景图片

终于成功实现了如何为jframe窗口设置背景图片了。下面是示例,请初学swring的朋友们参考学习!
import  java.awt.*;
import  javax.swing.*;
import java.awt.Container;

public class framebg  {

    public framebg() {
    }
    public static void main (String[] args) {
    JFrame frame=new JFrame("背景图设置");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ImageIcon img = new ImageIcon("bg//1.gif");//这是背景图片
JLabel imgLabel = new JLabel(img);//将背景图放在标签里。

frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));//注意这里是关键,将背景标签添加到jfram的LayeredPane面板里。
imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());//设置背景标签的位置
Container cp=frame.getContentPane();
cp.setLayout(new BorderLayout());
JButton but=new JButton("anniu");//创建按钮
cp.add(but,"North");//将按钮添加入窗口的内容面板

((JPanel)cp).setOpaque(false); //注意这里,将内容面板设为透明。这样LayeredPane面板中的背景才能显示出来。

frame.setSize(500,300);
frame.setVisible(true); 
           
}
       
}

通过为jframe设置背景图片,让我明白了以下的知识要点:
(1)jframe窗口的组成部分,最底层是jrootpane面板。(这一点恐怕很多初学者都没有注意吧!)
(2)jframe的组成如下:
jrootpane中包含glasspane和layeredpane两个面板。而layeredpane面板包含contentpane和jmenubar。(没想到吧contentpane是放在contentpane中的?)
                         
(3)在jframe上添加组件,往往是添加在contentpane中。。但是在contentpane的下面还有两层面板,那就是layeredpane和jrootpane。
(4)任何一本关于java的书中都会介绍contentpane,却很少提到layeredpane和jrootpane,因此使得很多的初学者产生:jframe中只要一个contentpane的错误认识。

通过解决背景设置的问题,让我对jframe中容器的“层”结构,有个更深层的了解。

以上知识点,希望初学swing的朋友们注意。

ok!只是共分享!让我们共同学习进步!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以使用Swing库来创建弹出窗口,并设置背景图片。下面是一个示例代码,演示如何设置弹出窗口背景图片: ```java import javax.swing.*; import java.awt.*; public class BackgroundImageExample { public static void main(String[] args) { // 创建一个 JFrame 对象作为弹出窗口 JFrame frame = new JFrame("弹出窗口"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); // 创建一个 JPanel 对象作为容器 JPanel panel = new JPanel() { // 重写 paintComponent 方法,在其中绘制背景图片 @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // 加载背景图片 Image backgroundImage = new ImageIcon("path/to/your/image.jpg").getImage(); // 绘制背景图片 g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this); } }; // 设置 JPanel 的布局管理器 panel.setLayout(new BorderLayout()); // 将其他组件添加到 JPanel 中 // ... // 将 JPanel 添加到 JFrameframe.add(panel); // 显示弹出窗口 frame.setVisible(true); } } ``` 在上面的代码中,我们创建了一个继承自JPanel的匿名内部类,并重写了其paintComponent方法,在其中绘制了背景图片。你需要将"path/to/your/image.jpg"替换为你自己的图片路径。 注意:为了使背景图片能够正确显示,需要将图片文件放置在项目的根目录或者指定的路径下。 希望这个示例能够帮助到你。如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值