Swinghacks——给文本控件添加图片背景

本文介绍如何在Java Swing中为JTextField设置背景图片,通过重写paintComponent方法并结合TexturePaint实现美观的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看效果图,这是一个有背景图片的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);
    }
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值