繁体   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