1

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

该解决方案应该在 Java 5 中运行。可以使用 SwingX。

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

4

4 回答 4

2

更新:我错过了超链接支持的请求。不知道如何使用 EditorPane 来做到这一点。

JTextArea 完全符合您的描述。

JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);
于 2009-01-20T12:38:07.467 回答
1

替代文字 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 );

    }
}
于 2009-01-20T19:52:43.923 回答
1

我发现JTextPane了,我以前由于某种原因忽略了它。这门课做我需要的。

不过感谢您的帮助。:)

于 2009-01-21T22:24:22.243 回答
0

虽然它可能不是您正在寻找的解决方案,但从您的要求来看,似乎定制LayoutManager可能能够实现您所追求的。通过设计和分配一个允许换行的自定义布局管理器Container(例如Panel),应该可以有一个Panel允许换行的。

Java 教程中的在容器中布局组件一文将提供有关布局管理器如何在 Java 中工作的一般信息,特别是,创建自定义布局管理器将提供有关如何使自定义布局管理器应用于.Container

FlowLayout(的默认布局管理器)的行为Panel似乎与您可能追求的行为非常接近。为换行添加功能似乎是缺失的部分。

建议:或许自定义的LayoutManager可以通过aComponent表示换行符来添加换行符,Container使用add()方法可以添加到a中。

例如,Component在自定义布局管理器中有一个类常量,例如 (a hypothetical) 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呈现第一个,在第二行中呈现第二个。LabelLabel

于 2009-01-20T14:01:58.733 回答