Search code examples
javaswingjtextareajtextpane

Centering Text in a JTextArea or JTextPane - Horizontal Text Alignment


Is there a way to create horizontally centered text for a JTextArea like with a JTextField?

setHorizontalAlignment(JTextField.CENTER);

Is there a way I can accomplish the same thing with a multi-line text area? I can't find a method for it with JTextArea, so is there another option? JTextPane? If so, how?


Solution

  • You need to use a JTextPane and use attributes. The following should center all the text:

    StyledDocument doc = textPane.getStyledDocument();
    SimpleAttributeSet center = new SimpleAttributeSet();
    StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
    doc.setParagraphAttributes(0, doc.getLength(), center, false);
    

    Edit:

    Vertical centering is not supported as far as I know. Here is some code you might find useful: Vertical Alignment of JTextPane