[英]Java Swing GUI: Text Wrap, Center Text, and Custom Font?
我有一個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);
此代碼導致文本被自動換行,字體工作,但不是居中。
假設你的意思是水平居中,我建議使用JTextPane
。 我沒有測試,但我希望,設置你的字體也能正常工作。 對於居中,請參閱JTextArea中的居中文本或JTextPane - 水平文本對齊 ,我現在引用答案:
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自動換行應免費提供。 希望這有助於,如果沒有,請澄清問題。
這確實適用於我的居中和自動換行部分:
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)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.