JTextField上的自定义渲染器.可能吗 ?

mas*_*eth 0 java swing renderer jtextfield

我需要创建看起来像JTextField的组件(相同的边框,阴影,圆角等),但用于显示带文本的图形.

是否可以为JTextField创建渲染器之类的东西?或者基于JPanel创建自定义组件,但是如何强制它看起来与JTextField相同

另一个复杂因素是应用程序将在不同的LAF上运行.

你有什么想法 ?

And*_*son 8

使用JTextPaneJEditorPane可以处理样式文本(带有嵌入图标).有关更多详细信息,请参见如何使用编辑器窗格和文本窗格.

嵌入图像的富文本文档


更新

我需要在不同的外观和感觉中创建看起来像JTextField的自定义组件,使用JTextPane或JEditorPane将更改边框着色和组件.

真?下一个屏幕截图显示了所有3.哪个是哪个?

区分这些

(通过查看第1段代码不会作弊.)

至于PLAF.给我看一个PLAF,它们之间有明显的区别.

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

class DistinguishThese {

    public void initGui() {
        JPanel gui = new JPanel(new GridLayout(3,0,2,2));

        gui.add(new JTextField(5));
        gui.add(new JScrollPane(new JEditorPane()));
        gui.add(new JScrollPane(new JTextPane()));

        JOptionPane.showMessageDialog(null, gui);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                DistinguishThese dt = new DistinguishThese();
                dt.initGui();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)