Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing中带换行和换行的面板_Java_Swing_User Interface_Jpanel_Jtextpane - Fatal编程技术网

Java Swing中带换行和换行的面板

Java Swing中带换行和换行的面板,java,swing,user-interface,jpanel,jtextpane,Java,Swing,User Interface,Jpanel,Jtextpane,如何实现支持换行和换行的面板? 我只会将文本标签和换行符添加到此面板。 标签应从左向右流动,如果需要,则换行到下一行 需要。换行将导致跳转到下一行。 我还想使面板垂直滚动 该解决方案应该在Java5中工作。可以使用SwingX 澄清:文本标签实际上是来自SwingX的JXHyperlinks, i、 e.面板包含可点击的标签。这就是我不能直接使用的原因 JTextArea.更新:我错过了超级链接支持的请求。我不知道如何不用EditorPane来做 JTextArea正是您所描述的 JTextAr

如何实现支持换行和换行的面板? 我只会将文本标签和换行符添加到此面板。 标签应从左向右流动,如果需要,则换行到下一行 需要。换行将导致跳转到下一行。 我还想使面板垂直滚动

该解决方案应该在Java5中工作。可以使用SwingX

澄清:文本标签实际上是来自SwingX的JXHyperlinks, i、 e.面板包含可点击的标签。这就是我不能直接使用的原因
JTextArea.

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

JTextArea正是您所描述的

JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);

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

JTextArea正是您所描述的

JTextArea textArea = new JTextArea();
JScrollPanel sPane = new JScrollPane(textArea);

尽管这可能不是您正在寻找的解决方案,但从您的需求来看,定制的布局经理似乎能够实现您所追求的目标。通过设计和指定一个自定义布局管理器,该管理器允许将换行符分配给一个,例如,应该可以拥有一个允许换行的面板

来自的文章将提供关于布局管理器如何在Java中工作的一般信息,特别是,将提供关于如何使自定义布局管理器应用于容器的信息

面板的默认布局管理器的行为似乎和您可能追求的行为非常接近。为换行符添加功能似乎是缺少的一部分

建议:也许自定义布局管理器可以通过具有表示换行符的组件来添加换行符,该组件可以使用add方法添加到容器中

例如,在自定义布局管理器中有一个类常量组件,例如假设的LineBreakLayout.LINE_BREAK,将其添加到容器中可以告诉自定义布局管理器移动到下一行。也许一个实现可以如下所示:

Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));

上面假设的LineBreakLayout将在一行中呈现第一个标签,在第二行中呈现第二个标签。

尽管这可能不是您正在寻找的解决方案,但从您的需求来看,定制的LayoutManager似乎可以实现您的目标。通过设计和指定一个自定义布局管理器,该管理器允许将换行符分配给一个,例如,应该可以拥有一个允许换行的面板

来自的文章将提供关于布局管理器如何在Java中工作的一般信息,特别是,将提供关于如何使自定义布局管理器应用于容器的信息

面板的默认布局管理器的行为似乎和您可能追求的行为非常接近。为换行符添加功能似乎是缺少的一部分

建议:也许自定义布局管理器可以通过具有表示换行符的组件来添加换行符,该组件可以使用add方法添加到容器中

例如,在自定义布局管理器中有一个类常量组件,例如假设的LineBreakLayout.LINE_BREAK,将其添加到容器中可以告诉自定义布局管理器移动到下一行。也许一个实现可以如下所示:

Panel p = new Panel(new LineBreakLayout());
p.add(new Label("First Line"));
p.add(LineBreakLayout.LINE_BREAK);
p.add(new Label("Second Line"));
然后,上面假设的LineBreakLayout将在一行中呈现第一个标签,在第二行中呈现第二个标签

此示例不是来自作为容器的面板,而是来自用于显示内容的JLabel

您可以在内容中使用HTML,并在每次休息时使用。您应该根据组件调整大小的规则以编程方式计算打断

代码如下:

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 );

    }
}
此示例不是来自作为容器的面板,而是来自用于显示内容的JLabel

您可以在内容中使用HTML,并在每次休息时使用。您应该根据组件调整大小的规则以编程方式计算打断

代码如下:

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 );

    }
}
我找到了JTextPane,因为某种原因我以前忽略了它。这门课满足了我的需要

谢谢你的帮助

我找到了JTextPane,因为某种原因我以前忽略了它。这门课满足了我的需要


谢谢你的帮助

我想让标签可以点击,这样它们就可以像超链接一样工作。我可以用TextArea吗?我不想在HTML中使用JEditorPane。我只是好奇,有什么反对JEditorPane的理由吗?看起来很慢,而且有点过火。我也不知道如何用页面上的每个超链接来存储Java对象,这样点击链接就会根据对象执行一些操作。超链接事件监听器使用锚标记中的元素和URL进行回调,这导致了炒作
林克。您可能可以从URL->Object创建某种映射来执行操作。我现在有类似的东西。我只是想知道如果没有这样的映射表,是否有更好的解决方案。我想让标签可以点击,这样它们就可以像超链接一样工作。我可以用TextArea吗?我不想在HTML中使用JEditorPane。我只是好奇,有什么反对JEditorPane的理由吗?看起来很慢,而且有点过火。此外,我也不知道如何使用页面上的每个超链接存储Java对象,以便单击该链接将根据该对象执行某些操作。超链接事件侦听器使用导致超链接的锚标记中的元素和URL进行回调。您可能可以从URL->Object创建某种映射来执行操作。我现在有类似的东西。我只是想知道,如果没有这样一个映射表,是否有更好的解决方案。根据超链接,您可以使用鼠标侦听器来获得。您可以获取单击对象的位置,并使用映射执行操作。但是在阅读你对basszero答案的评论时,我想你只是不想对它进行编程。是的,我不想实现一个将字符串映射到对象的映射。我可以使用SwingX中的JXHyperlink将对象存储到链接中,并在单击链接时对对象执行操作。问题只是如何布局链接,使它们包装在一个可滚动的窗格中。根据超链接,您可以使用鼠标侦听器进行设置。您可以获取单击对象的位置,并使用映射执行操作。但是在阅读你对basszero答案的评论时,我想你只是不想对它进行编程。是的,我不想实现一个将字符串映射到对象的映射。我可以使用SwingX中的JXHyperlink将对象存储到链接中,并在单击链接时对对象执行操作。问题只在于如何布局链接,使其包装在可滚动的窗格中。