java 如何为一个窗体设置背景图片
来源:互联网 发布:linq to sql distinct 编辑:程序博客网 时间:2024/05/21 21:47
要为一个窗体添加背景图片,必须知道绘制JComponent组件的过程。Swing轻量组件的绘制是组件和组件UI代表合作的结果。
代码 设置窗体背景图片:
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- public class GraExp extends JFrame
- {
- CInstead c1=new CInstead();
- Container c;
- JLabel lbl1=new JLabel("姓名:" );
- JLabel lbl2=new JLabel("密码:" );
- JTextField tf1=new JTextField(10),
- tf2=new JTextField(10);
- public GraExp()
- {
- setContentPane(c1);
- c=getContentPane();
- c.setLayout(new FlowLayout(FlowLayout.LEFT));
- c.add(lbl1);
- c.add(tf1);
- c.add(lbl2);
- c.add(tf2);
- setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- setSize(new Dimension(400,300));
- show();
- }
- public static void main(String[] args)
- {
- GraExp ge=new GraExp();
- }
- class CInstead extends JPanel
- {
- ImageIcon icon;
- Image img;
- public CInstead()
- {
- icon=new ImageIcon(GraExp.class.getResource("333.png" ));
- img=icon.getImage();
- }
- public void paintComponent(Graphics g)
- {
- super.paintComponent(g);
- g.drawImage(img,0,0,null );
- }
- }
- }
界面运行图如下:
程序分析:
JComponent.paint先绘制组件,然后绘制组件的边框,再绘制组件的子组件。调用的顺序确保组件、边框和子组件都是可视的。如果组件有一个 UI代表,则JComponent.paintComponent调用该代表的Update方法,该方法为不透明组件擦除背景,然后绘制组件。
CInstead是一个不透明的组件,如果重载paint方法,其背景图是无法被擦除的,因此,即使更新了组件的所有包含组件,在界面上是看不到的。所以必须重载paintComponent方法,在绘制子组件前先擦除背景。
对双缓存组件,paint方法负责把组件绘制到屏外缓存中,然后把屏外缓存拷贝到组件的屏上代表中,正因为如此,我们不建议为Swing组件重载paint,如果需要重新定义如何绘制组件,那么就重载paintComponent()。
0 0
- java 如何为一个窗体设置背景图片
- java 如何为一个窗体设置背景图片
- Java-如何为frame窗口设置背景图片
- JAVA如何在为窗口设置背景图片
- JAVA如何在为窗口设置背景图片
- 如何为UINavigationBar设置背景图片
- 如何为UINavigationBar设置背景图片
- 如何为UINavigationBar设置背景图片
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片
- Java.swing-如何为frame窗口设置背景图片
- JAVA如何在为窗口设置背景图片(1.JFrame)
- java给窗体或面板设置背景图片
- Java Swing 之设置窗体背景图片
- [Java]JFrame如何设置背景图片
- java如何设置界面背景图片
- java如何设置JFrame背景图片
- Duilib中各个类的简单介绍
- 将表中一个字段拆分成多列 oracle db2字段拆分
- 北京世纪坛医院治疗肺癌晚期有什么方法 - 肺癌治疗 -
- (五)Android百度公交开发—百度地图API之POI搜索-发现你身边的兴趣点,如超市、餐厅、ATM...
- 东软学习,基于oracle的一个分页实例
- java 如何为一个窗体设置背景图片
- 北京世纪坛医院治疗肺癌晚期有什么方法 - 肺癌治疗 -
- 拥抱Mac之码农篇
- jquery callback 隐藏 显示 一个奇怪的发现
- 是谁离间了中移动和微信
- 北京世纪坛医院治疗肺癌晚期有什么方法 - 肺癌治疗 -
- 如何调试 Android 手机网页
- android获取屏幕宽和高
- 软件采购必备:软件供应商评估表 之七(共七),结束!