Java Swing GUI:文本换行,中心文本和自定义字体?

时间:2014-02-18 17:25:38

标签: java swing

我有一个JPanel(我也试过了一个JTextArea),我希望它上面有文字。文字必须是

  1. 居中
  2. 自动换行
  3. 使用我当前使用的.tf文件中的自定义字体,该文件是 not 安装在计算机上。我已经解决了这个问题,字体工作正常。但是,当我将其置于标签中时,它不会起作用,因为我认为这可能是解决我的问题的方法。
  4. 我通常可以让其中两条规则起作用,但不能让所有三条规则同时工作。我已经尝试过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);
    

    此代码导致文本被自动换行,字体工作,但不会居中。

2 个答案:

答案 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一起使用)。