在JTextArea或JTextPane中居中文本 - 水平文本对齐

35

有没有办法为JTextArea创建水平居中的文本,就像JTextField一样?

setHorizontalAlignment(JTextField.CENTER);

有没有办法用多行文本区域实现相同的功能?我在JTextArea中找不到相应的方法,那还有其他选项吗?JTextPane?如果可以,怎么做?

1个回答

70
你需要使用JTextPane并使用属性。以下内容可以使所有文本居中:
StyledDocument doc = textPane.getStyledDocument();
SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);

编辑:

据我所知,垂直居中不受支持。这里有一些代码可能会对您有用:JTextPane的垂直对齐


1
如果我还想让它垂直居中怎么办? - Awaken
上面的代码没有类型转换问题。请注意,如果你正在使用JEditorPane,只有StyledDocument支持setParagraphAttributes()方法。您需要将getDocument()的结果转换为StyledDocument。 - server_kitten
我不确定上面的代码是如何工作的,但我需要使用doc.setParagraphAttributes(center, false)才能使其正常工作。 - John Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接