How to center align text in JTextArea?

16,964

Solution 1

To center text you should use a JTextPane not a JTextArea. Centering text is a big issue.

It is better to solve the background problem with the JTextPane.

When using the Nimbus LAF it looks like you need to provide a custom Painter to just paint the background as a solid color. Check out this answer by @mKorbel. You would need to change the property tag. Also in the FillPainter I changed:

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

Solution 2

Thanks .... Working ,,,, This is what I used ...

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());
    }
}
Share:
16,964
Er Kaushik Chakraborty
Author by

Er Kaushik Chakraborty

Updated on July 12, 2022

Comments

  • Er Kaushik Chakraborty
    Er Kaushik Chakraborty almost 2 years


    I have requirement of Text wrapping + Text Centering + Nimbus Look and Feel + with a background color black.
    I tried out with the following 2 components
    1. JTextPane
    -------supports: Text Wrapping + Text Centering using StyledDocument
    -------issue : custom background color doesn't work Nimbus Look and Feel(be it disabled or enabled)
    which is bug as show here http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=ab1938d61a7fd83ca2b54eb8df7?bug_id=6789980

    my jdk version is : 1.6.0_33
    Fixes tried :

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

    but this also is unable to override the Nimbus default which is #d6d9df (214,217,223)

    Can anyone help me with text Centering in the JTextArea? Thanks in advance

    1. JTextArea
    -------supports: Text Wrapping + background coloring with Nimbus LnF (only when its enabled)
    -------issue : Text Centering is an issue in here

    • Mogli
      Mogli about 11 years
    • Er Kaushik Chakraborty
      Er Kaushik Chakraborty about 11 years
      yes it works's but with JTextPane only and not with JTextArea. I need to solve my problem with JTextArea only (because the background color cannot be set in the JTextPane with Nimbus LnF). Didn't had any luck with that as of for now , :'(
  • Er Kaushik Chakraborty
    Er Kaushik Chakraborty about 11 years
    Thanks .... Working ,,,, This is what I used ... UIManager.getLookAndFeelDefaults().put("TextPane[Enabled].ba‌​ckgroundPainter", new FillPainter()); <br><br> public class FillPainter implements Painter<JComponent> { @Override public void paint(Graphics2D g, JComponent object, int width, int height) { g.setColor(object.getBackground()); } }