为Swing重新流动标签小部件

nd.*_*nd. 2 java formatting swing label widget

是否有一个Swing的小部件,其行为类似于a JLabel,如果文本的尺寸发生变化,它会自动重排文本?例如:

Large horizontal space available:
+--------------+
| Foo bar baz  |
+--------------+

Small horizontal space available:
+---------+
| Foo bar |
| baz     |
+---------+

我目前正在使用JEditorPanesetContentType("text/html")和HTML内容.这有效,但它不使用系统的默认标签字体来显示文本.此外,我宁愿不将HTML标记放入我的文本中 - 最好\n将字符转换为换行符,其他所有内容都将显示为文本.

Sve*_*hal 7

您可以使用JTextArea多行纯文本小部件.

JavaDoc:http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTextArea.html

    JTextArea ta = new JTextArea("A JTextArea containing a long text");
    ta.setLineWrap(true);
    ta.setWrapStyleWord(true);
    ta.setOpaque(false);
    ta.setEditable(false);
    ta.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)
  • setLineWrap(true) 启用包装
  • setWrapStyleWord(true) 改变从字符到字的包装
  • setOpaque(true) 使其变得不透明,就像普通标签一样
  • setEditable(false) 隐藏插入符并禁用用户更改文本
  • setFocusable(false) 禁用用户选择文本

它看起来像一个nornal JLabel,但只要宽度太小,它就会包装文本.