如何实现支持换行和换行的面板? 我只会在此面板中添加文本标签和换行符。 标签应该从左向右流动,如果是,则包裹到下一个“线” 需要。换行会导致跳转到下一行。 我还想让面板垂直滚动。
解决方案应该适用于Java 5.可以使用SwingX。
澄清:文本标签实际上是JXHyperlink
s(来自SwingX),
即面板包含可点击的标签。这就是我不能使用的原因
JTextArea
。
答案 0 :(得分:1)
更新:我错过了超链接支持请求。不知道怎么做,没有使用EditorPane。
JTextArea正是您所描述的。
JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);
答案 1 :(得分:1)
alt text http://img187.imageshack.us/img187/3238/wraprn0.png
此示例不是来自面板,即容器,而是来自JLabel,用于显示内容。
您可以在内容中使用HTML并使用< br>每次休息。 你应该根据组件调整大小的规则以编程方式计算休息时间。
以下是代码:
import javax.swing.*;
import java.awt.*;
public class Wrap {
public static void main( String [] args ) {
JFrame frame = new JFrame("Wrap test");
String text = "<html>This<br>is<br>a<br>multiline<br>label</html>";
frame.add( new JLabel( text ) );
frame.pack();
frame.setVisible( true );
}
}
答案 2 :(得分:1)
我找到了JTextPane
,我之前由于某种原因忽略了它。这个课做我需要的。
感谢您的帮助。 :)
答案 3 :(得分:0)
虽然它可能不是您正在寻找的解决方案,但是根据您的要求,似乎自定义LayoutManager
可能能够实现您所追求的目标。通过设计和分配允许换行符为Container
的自定义布局管理器(例如Panel
),应该可以使用允许换行的Panel
。
来自Laying Out Components Within a Container的The Java Tutorials文章将提供有关布局管理器如何在Java中工作的一般信息,特别是Creating a Custom Layout Manager将提供有关如何制作自定义布局管理器的信息适用于Container
。
FlowLayout
(Panel
的默认布局管理器)的行为似乎与您之后的行为非常接近。为换行添加功能似乎是缺失的部分。
建议:也许自定义布局管理器可以通过使用代表换行符的Component
来添加换行符,这可以添加到{{1}使用Container
方法。
例如,在自定义布局管理器中有一个类常量add()
,例如(假设的)Component
,并将其添加到LineBreakLayout.LINE_BREAK
可以告诉自定义布局管理器转到下一行。也许实现可以是:
Container
上述假设 Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));
将在第一行呈现第一个LineBreakLayout
,在第二行呈现第二个Label
。