【问题标题】:Java JLabel, break text to next line?Java JLabel,将文本中断到下一行?
【发布时间】:2012-03-06 10:40:59
【问题描述】:

好久没问问题了!

我正在用 Java 开发一个使用 JLabels 的应用程序。无论如何,正如您可能无法从下图中看到的那样,Category Test 的文字会被截断并最终改为 Categor...。一旦文本填满标签的宽度,有什么方法可以“破坏”文本?这是图片:

我做了什么

我使用了这样的 JTextPane:

    JTextPane text = new JTextPane();
    SimpleAttributeSet attr = new SimpleAttributeSet();   

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);  

    pane.add(text, c);

然后我添加了我的文字,但还是谢谢!

【问题讨论】:

  • 我会从那里得到“类别”字符串。这是完全没有必要的。相反,可能在网格上方的单个 JLabel 中有“类别”。
  • 呃,那些是占位符。用户将定义类别所说的内容。你见过危险吗?

标签: java swing text newline jlabel


【解决方案1】:

JLabels 默认不能这样做。但是JLabels 对 html 有一些支持,因此带有文本 <html>First Line<br />Second Line</html>JLabel 将显示在两行中。

如果您想要一个可以自行拆分行的组件,请查看JTextArea

【讨论】:

  • 我现在会 +1,但我想看看我是否找不到其他方法。谢谢。
  • @Ken 做了更多的搜索,JLabels 只显示 1 行,除非你使用 html。
  • 你知道如何我什至会将 JTextArea 放在 JLabel 中吗?你有一些示例代码吗?
  • @Ken 您可以将JLabel 替换为JTextArea,而不是将JTextArea 放入其中。
【解决方案2】:

我记得,如果你想要 textwrap,你需要使用 JTextArea。 JLabel 不这样做。

【讨论】:

    【解决方案3】:

    您可以在http://java.net/projects/jide-oss/ 的 JIDE Common Layer 开源项目中访问 StyledLabel 组件。

    html JLabel 方法的问题是它不会自动换行,并且比普通的 JLabel 慢 20 到 40 倍。

    JTextArea 或 JTextPane 方法的问题在于它有一个奇怪的大小问题,而且速度也慢了 20 倍。

    StyledLabel 扩展了 JLabel。自动换行只是它添加的众多功能之一。而且性能和普通的 JLabel 一样快。

    希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      相关资源
      最近更新 更多