加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 带有背景图像的JTextArea的内部填充

发布时间:2020-12-15 03:15:11 所属栏目:Java 来源:网络整理
导读:我的最终目标是拥有一个带有背景图像的JTextArea.我发现在线代码向我展示了如何做到这一点,但现在我遇到的问题是文本位于图像之上. 这就是我的意思: 有没有什么方法可以添加一种向内缩进,以便文本不与图像的边缘重叠? 这是原始评论气泡图像. 这是代码: im
我的最终目标是拥有一个带有背景图像的JTextArea.我发现在线代码向我展示了如何做到这一点,但现在我遇到的问题是文本位于图像之上.

这就是我的意思:

有没有什么方法可以添加一种向内缩进,以便文本不与图像的边缘重叠?

这是原始评论气泡图像.

这是代码:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.GrayFilter;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class myBackgroundSample {

    String file;

    public myBackgroundSample(String i) {
        file = i;
        setItUp();
    }

    public void setItUp() {
        final ImageIcon imageIcon = new ImageIcon(file);
        JTextArea textArea = new JTextArea() {
            Image image = imageIcon.getImage();

            public void paint(Graphics g) {
                setOpaque(false);
                g.drawImage(image,this);
                super.paint(g);
            }
        };
        JFrame frame = new JFrame("Background Example");
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        JScrollPane scrollPane = new JScrollPane(textArea);
        Container content = frame.getContentPane();
        content.add(scrollPane,BorderLayout.CENTER);
        frame.setSize(400,400);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String right = "chat1.jpg";
        myBackgroundSample temp = new myBackgroundSample(right);

    }
}

解决方法

使用扩展 AbstractBorder的自定义边框.这样的东西:

获得确切的形状和颜色留给读者练习.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读