Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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组件,具有自动换行功能和有限宽度,支持HTML_Java_Html_Swing_Jscrollpane_Jtextcomponent - Fatal编程技术网

Java Swing组件,具有自动换行功能和有限宽度,支持HTML

Java Swing组件,具有自动换行功能和有限宽度,支持HTML,java,html,swing,jscrollpane,jtextcomponent,Java,Html,Swing,Jscrollpane,Jtextcomponent,我想实现一个带有滚动条的小工具提示,就像eclipse中悬停在类或成员上方时出现的滚动条一样 我遇到的问题是,如何在工具提示中的滚动窗格中仅限制组件的宽度而不限制其高度。该组件应该支持HTML,并且当文本超过内部边界的宽度时,也应该正确地包装文本,但是我尝试过的所有组件都有换行或HTML呈现,但不是两者都有 也找不到一种仅限制宽度的方法,因为每个“setXSize”,其中X是“首选”“max”“min”等。所有这些都需要两个参数,并且没有用于组件的“setMaxWidth”方法 设置“setMa

我想实现一个带有滚动条的小工具提示,就像eclipse中悬停在类或成员上方时出现的滚动条一样

我遇到的问题是,如何在工具提示中的滚动窗格中仅限制组件的宽度而不限制其高度。该组件应该支持HTML,并且当文本超过内部边界的宽度时,也应该正确地包装文本,但是我尝试过的所有组件都有换行或HTML呈现,但不是两者都有

也找不到一种仅限制宽度的方法,因为每个“setXSize”,其中X是“首选”“max”“min”等。所有这些都需要两个参数,并且没有用于组件的“setMaxWidth”方法

设置“setMaximumSize(新维度(256,Integer.MAX_VALUE);”似乎是一个解决方案,但它不起作用,因为“MAX”和“min”设置的参数在大多数情况下被忽略,这相当令人沮丧

应要求提供实施的当前示例:

public class MyTooltip extends JTooltip{
    private JScrollPane scroll;
    private JEditorPane pane;

    public MyTooltip(String htmlCode){
       this.pane = new JEditorPane();
       this.scroll = new JScrollPane(this.pane);
       this.pane.setEditable(false);
       this.pane.setContentType("text/html");
       this.scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

       //Here the problems begin
       this.pane.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
       this.scroll.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
       this.pane.setText(htmlCode);

       this.add(scroll);
    }
}
  • 实际的代码有点复杂,但我认为这是一个很好的近似

您是否使用
HTMLEditorKit
(内容类型text/html)尝试过
JTextPane


我想这就是你所需要的。

好吧,整个问题本身就解决了:一个想法是让用户编写自己的文本以显示在工具提示上,但这包括允许他在需要时使用多个“空格”进行缩进

为了让HTML按预期呈现,我们将每个“空格”替换为
,因此不会对字符之间的间距进行优化,但这当然会导致自动换行的算法不会接受单词之间的任何“间距”作为断开行的合适位置


因此,我们的实现实际上是按预期工作的,只有我们提供的工具提示显示的字符串不适合换行。

通过编辑添加。文本会显示,但当HTML片段的任何一行太长时,我不会换行,但文本会一直在视口之外,并通过对齐v来固定视图本身查看显示文本的中心-让文本覆盖不超过我想要的最大宽度的相关部分的过大部分,不要设置窗格的最大/首选/最小大小。