关于JFrame添加背景图片,setbounds的小知识
关于 添加 知识 背景图片
2023-09-11 14:20:19 时间
描述:
给JFrame窗口添加图片时,我采用的是,创建一个JLayeredPane用于分层,将标签(JLabel)放入到一个JPanel面板中,然后在创建一个按钮来测试该图片是一个背景,而不是单纯的图片,然后运用分层。将JPanel放入底层,把Jbutton放入较高一层。
注意:在开始时我并没有用setbounds来设置按钮,所以就导致了按钮没有显示出来,想了想,将其加上,问题得到解决。
测试代码:
/**
* 给JFrame 添加一个背景图案。
*/
import javax.swing.*;
public class JFrameBackground4
{
JFrame jf=new JFrame("窗口");
//创建一个JLayeredPane用于分层的。
JLayeredPane layeredPane=new JLayeredPane();
//创建一个Panel和一个Label用于存放图片,作为背景。
JPanel jp=new JPanel();
JLabel jl=new JLabel();
ImageIcon image=new ImageIcon("src\\img.png");//随便找一张图就可以看到效果。
//创建一个按钮用于测试的。
JButton jb;
public void init()
{
//创建背景的相关内容
jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
jl.setIcon(new ImageIcon("src\\img.png"));
jp.add(jl);
//创建一个测试按钮
jb=new JButton("测试按钮");
jb.setBounds(100,100,100,100);//当不加此语句时无法显示出按钮
//将jp放到最底层。
layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
//将jb放到高一层的地方
layeredPane.add(jb,JLayeredPane.MODAL_LAYER);
jf.setLayeredPane(layeredPane);//将层级面板加入到窗口中
jf.setSize(image.getIconWidth(),image.getIconHeight());//窗口大小
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭
jf.setLocation(image.getIconWidth(),image.getIconHeight());//窗口位置
jf.setVisible(true);//设置可见
}
public static void main(String[] args)
{
new JFrameBackground4().init();
}
}
运行结果:
相关文章
- 关于个人开源项目(vue app)的一些总结
- php中关于抽象(abstract)类和抽象方法的问题解析
- 【游戏开发备注之一】关于COCOS2DX_V1.X版本IPHONE与ANDROID运行出现图片白块、添加GAMECENTER报错问题及编译ANDROID闪退的解决办法&&CCLOG与CCLOG的区别
- 国内SAP UI5使用者关于性能优化和UI5 Web Component的讨论
- 关于用 ABAP 代码手动触发 SAP CRM organization Model 自动决定的研究
- 关于 Angular 项目类型为 library 的工程使用 tsconfig.json 的问题
- 关于 Angular 服务实例作用域的问题 - 使用组件限定服务提供者的作用域
- [转]关于Infobright的数据导入
- 有关于apktool的使用的一些心得
- 关于购物车添加按钮的动画(vue.js)
- [0] 关于IComparable和IComparer接口和Comparer类
- 【日常工作所需,零锁整理二】关于Absolute公司防盗追踪软件会向境外传输不明数据等安全风险:撰写了批处理脚本
- Keil关于.axf文件报错
- 关于Android SDK程序控制开发板GPIO的问题