如何在JTextArea中居中对齐文本?

时间:2013-06-18 06:04:43

标签: swing jtextarea jtextpane nimbus


我要求文字包装+文本居中+ Nimbus外观和感觉+背景颜色为黑色。
我尝试了以下2个组件
1。 JTextPane
------- 支持:使用StyledDocument文本环绕+文本居中
------- 问题:自定义背景颜色不起作用Nimbus外观(禁用或启用)
这是显示在这里的错误http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=ab1938d61a7fd83ca2b54eb8df7?bug_id=6789980

我的jdk版本是: 1.6.0_33
修复尝试:

UIManager.getLookAndFeelDefaults().put("TextPane.background", Color.RED);

但这也无法覆盖Nimbus默认值#d6d9df(214,217,223)

任何人都可以帮我解决JTextArea中的文本居中问题吗? 提前致谢

1。 JTextArea
------- 支持:使用Nimbus LnF进行文字环绕+背景着色(仅在启用时)
------- 问题:文字居中是这里的一个问题

2 个答案:

答案 0 :(得分:2)

要使文本居中,您应该使用JTextPane而不是JTextArea。居中文本是一个大问题。

最好用JTextPane解决背景问题。

使用Nimbus LAF时,您需要提供自定义Painter才能将背景绘制为纯色。查看@mKorbel的answer。您需要更改属性标记。同样在FillPainter中我改变了:

g.setColor(color);
g.setColor(object.getBackground());

答案 1 :(得分:1)

谢谢....工作,,,, 这就是我用过的......

UIManager.getLookAndFeelDefaults().put("TextPane[Enabled].backgroundPainter", new FillPainter());`


public class FillPainter implements Painter<JComponent> {
    @Override
    public void paint(Graphics2D g, JComponent object, int width,int height) {
        g.setColor(object.getBackground());
    }
}