簡體   English   中英

Java Swing GUI:文本換行,中心文本和自定義字體?

[英]Java Swing GUI: Text Wrap, Center Text, and Custom Font?

我有一個JPanel(我也試過了一個JTextArea),我希望它上面有文字。 文本需要

  1. 中心
  2. 有文字包裝
  3. 使用我當前正在使用但未安裝在計算機上的.ttf文件中的自定義字體。 我已經解決了這個問題,字體工作正常。 但是,當放置在標簽中時它不起作用,因為我認為這是我的問題的可能解決方案。

我通常可以讓其中兩條規則起作用,但不能讓所有三條規則同時工作。 我已經嘗試過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM