微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JScrollPane 中 JTextPane 文本后面的静态图像

如何解决JScrollPane 中 JTextPane 文本后面的静态图像

所以我有一个 JScrollPane,我需要滚动(仅垂直)居中的自动换行文本。文本后面应该是静态的、不可滚动的部分透明图像。

我的第一种方法是将图像添加到 JScrollPane 中的 JTextPane。由于强制图像从其存在的位置滚动而失败。

我的第二种方法是使 JTextPane 的背景透明并在 JLabel 上显示 JTextPane 后面的图像。由于 JTextPane 的 bacakground 无法在 JScrollPane 中透明,因此失败。 - 现在我可以让它透明,但它会留下损坏、颜色错误和错位的文本以及随机出现在 JTextPane 上的滚动条。

我的第三种方法是使用 JTextArea 并在其后面显示图像。由于 JTextArea 无法将文本居中,因此失败。

我的第四种方法是使用 JLabel 来显示文本。由于 JLabel 无法自动换行,这失败了。尽管有些人似乎对此进行了 html 修复,但没有一个有效,因为它们都包裹在不正确的位置。

所以我不确定接下来应该尝试什么,感谢您的帮助。

解决方法

我的第二种方法是使 JTextPane 的背景透明

是的,这是查看任何背景图片所必需的

文本后面应该是静态的、不可滚动的部分透明图像。

您想对滚动窗格的 JViewport 进行自定义绘制以显示图像。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

public class ViewportBackground
{
    private static void createAndShowUI()
    {
        JTextArea textArea = new JTextArea(10,30);
//      JTextPane textArea = new JTextPane();
        textArea.setOpaque(false);

        Image image = new ImageIcon("mong.jpg").getImage();

        JViewport viewport = new JViewport()
        {
            @Override
            protected void paintComponent(Graphics g)
            {
                super.paintComponent(g);

                //  add custom painting here. 
                //  For a scaled image you can use:

                g.drawImage(image,getWidth(),getHeight(),this);
            }
        };

        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setViewport(viewport);
        scrollPane.setViewportView( textArea );

        JFrame frame = new JFrame("Viewport Background");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( scrollPane );
        frame.setLocationByPlatform( true );
        frame.pack();
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?