Swinghacks——给文本控件添加图片背景
2013-02-25 15:37
357 查看
先看效果图,这是一个有背景图片的JTextField
如果用java做个email客户端 或者 便签程序,然后给输入控件加入一些背景图片的话,还是不错的。
当然还可以配合上一篇文章中写到的 自定义边框。
来看看实现原理,swing默认是没有设置背景图片的功能,那么还是需要利用paintComponent方法
有一点需要注意,在重写paintComponent之前把背景图片画好,然后调用super.paintComponent(g)画控件
这样可以保证控件内容覆盖在背景图片上面
上代码:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.imageio.*;
import java.awt.image.*;
// put a texture in the background
public class WatermarkTextField extends JTextField {
BufferedImage img;
TexturePaint texture;
public WatermarkTextField(File file) throws IOException {
super();
img = ImageIO.read(file);
Rectangle rect = new Rectangle(0,0,
img.getWidth(null),img.getHeight(null));
texture = new TexturePaint(img, rect);
setOpaque(false);
}
public void paintComponent(Graphics g) {
//先画背景
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(texture);
g.fillRect(0,0,getWidth(),getHeight());
//然后画控件,不然控件内容就被背景覆盖了
super.paintComponent(g);
}
}
如果用java做个email客户端 或者 便签程序,然后给输入控件加入一些背景图片的话,还是不错的。
当然还可以配合上一篇文章中写到的 自定义边框。
来看看实现原理,swing默认是没有设置背景图片的功能,那么还是需要利用paintComponent方法
有一点需要注意,在重写paintComponent之前把背景图片画好,然后调用super.paintComponent(g)画控件
这样可以保证控件内容覆盖在背景图片上面
上代码:
import java.io.*;
import java.awt.*;
import javax.swing.*;
import javax.imageio.*;
import java.awt.image.*;
// put a texture in the background
public class WatermarkTextField extends JTextField {
BufferedImage img;
TexturePaint texture;
public WatermarkTextField(File file) throws IOException {
super();
img = ImageIO.read(file);
Rectangle rect = new Rectangle(0,0,
img.getWidth(null),img.getHeight(null));
texture = new TexturePaint(img, rect);
setOpaque(false);
}
public void paintComponent(Graphics g) {
//先画背景
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(texture);
g.fillRect(0,0,getWidth(),getHeight());
//然后画控件,不然控件内容就被背景覆盖了
super.paintComponent(g);
}
}
相关文章推荐
- android richEditText 可添加文本和图片的记事本功能的控件打造
- 为input=file 控件添加背景图片
- VS2010/MFC 按钮控件添加bmp图片背景
- MFC 添加背景图片并让控件背景透明 .
- MFC 添加背景图片并让控件背景透明
- 代码方式给控件添加背景图片(WPF)
- !!!GTK+3.0 给控件和窗口添加背景图片
- MFC 添加背景图片并让控件背景透明
- mfc中 控件 对话框 添加颜色 背景图片
- MFC对话框修改背景颜色或添加背景图片、控件背景与字体颜色的修改
- 关于QT利用setStyleSheet为主控件添加背景图片,而不影响其子控件的背景设置
- mfc对话框程序如何添加背景图片以及使控件背景图片与对话框一致
- VC中添加背景图片,防止遮挡其他控件
- (Winform)控件中添加GIF图片以及运用双缓冲使其不闪烁以及背景是gif时使控件(如panel)变透明
- MFC为对话框添加背景图片(非picture control控件)
- MFC一一添加背景图片并让控件实现透明的
- 用Qt Designer 给对话框控件添加背景图片和颜色或者插入图片
- 为Button 控件添加背景图片
- 为Visual Studio 2012文本编辑框添加背景图片
- Android代码中设置图片,文本自定义颜色,Linearlayout等控件设置背景