在Java Swing中使用换行和换行的面板

时间:2009-01-20 12:34:07

标签: java swing user-interface jpanel jtextpane

如何实现支持换行和换行的面板? 我只会在此面板中添加文本标签和换行符。 标签应该从左向右流动,如果是,则包裹到下一个“线” 需要。换行会导致跳转到下一行。 我还想让面板垂直滚动。

解决方案应该适用于Java 5.可以使用SwingX。

澄清:文本标签实际上是JXHyperlink s(来自SwingX), 即面板包含可点击的标签。这就是我不能使用的原因 JTextArea

4 个答案:

答案 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 ContainerThe Java Tutorials文章将提供有关布局管理器如何在Java中工作的一般信息,特别是Creating a Custom Layout Manager将提供有关如何制作自定义布局管理器的信息适用于Container

FlowLayoutPanel的默认布局管理器)的行为似乎与您之后的行为非常接近。为换行添加功能似乎是缺失的部分。

建议:也许自定义布局管理器可以通过使用代表换行符的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