JTextPane修复了背景图片

时间:2014-05-19 15:55:47

标签: java css swing jtextpane

Dude,在包裹上foo.bar我有一个JTextPane班级(MyJTextPane)和一张图片back.png。 现在我将使用Text窗格在CSS中执行某些操作,我喜欢使用嵌入式back.png文件作为固定滚动,包括水平和垂直中心位置。
对于这样的css没有任何意外。

body { 
  background: url('back.png') no-repeat center center fixed; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

我的问题是,是否可以将此属性应用于JTextPane?如果是,那么我如何在这里指出嵌入的图像资源呢? 如果没有,那么还有其他解决方案吗?
提前谢谢。

1 个答案:

答案 0 :(得分:3)

在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(5, 30);
        textArea.setOpaque(false);

        JViewport viewport = new JViewport()
        {
            @Override
            protected void paintComponent(Graphics g)
            {
                super.paintComponent(g);
                int w = this.getWidth();
                int h = this.getHeight();
                g.setColor(new Color(0, 0, 255, 50));
                g.fillRect(0, 0, w/2, h/2);
                g.setColor(new Color(255, 0, 0, 50));
                g.fillRect(w/2, 0, w, h/2);
                g.setColor(new Color(0, 255, 0, 50));
                g.fillRect(0, h/2, w, h/2);
            }
        };

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

        JFrame frame = new JFrame("SSCCE");
        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();
            }
        });
    }
}

此示例仅绘制带图案的背景,您可以轻松使用Graphics.drawImage(...)方法为背景绘制图像。