我有一个JPanel(我也试过了一个JTextArea),我希望它上面有文字。文字必须是
我通常可以让其中两条规则起作用,但不能让所有三条规则同时工作。我已经尝试过html标签,JLabels,JTextAreas,但没有一个满足所有条件。有什么建议吗?
static JTextArea quesLbl;
quesLbl = new JTextArea("");
quesLbl.setWrapStyleWord(true);
quesLbl.setLineWrap(true);
quesLbl.setEditable(false);
quesLbl.setFont(qFont);
quesLbl.setOpaque(true);
quesLbl.setForeground(Color.WHITE);
quesLbl.setBackground(Color.BLUE);
此代码导致文本被自动换行,字体工作,但不会居中。
答案 0 :(得分:2)
假设你的意思是水平居中,我建议使用JTextPane
。我没有测试,但我希望,设置你的字体也能正常工作。对于居中,请参阅Centering Text in a JTextArea or JTextPane - Horizontal Text Alignment,我现在在那里引用答案:
public JTextPane createTextPane(String text){
JTextPane textPane = new JTextPane();
tp.setText(text);
StyledDocument doc = textPane.getStyledDocument();
SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);+
}
IIRC自动换行应免费提供。希望这有助于,如果没有,请澄清问题。
答案 1 :(得分:0)
这对我来说是集中和自动换行的部分:
JLabel label = new JLabel();
label.setText("<html><body style='text-align:center'> This is some very long sentance with many letters and not so much meaning.</body></html>");
label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalAlignment(JLabel.CENTER);
上述解决方案也有效,但我需要标签位于我的另一个组件之上(它不能与JTextPane一起使用)。