Java 如何修改HTML JLabel以使用少于8k的缓冲区?

Java 如何修改HTML JLabel以使用少于8k的缓冲区?,java,html,swing,jlabel,Java,Html,Swing,Jlabel,我发现,每当我在带有HTML的JLabel上设置文本时,都会分配一个8KB的缓冲区,即使我的标签文本可能很短。再深入一点,罪魁祸首似乎在DefaultStyledDocument中: public static final int BUFFER_SIZE_DEFAULT = 4096; 看起来每次更改文本时,都会触发一个属性更改侦听器,并分配一个新的HTMLDocument,其GapContent为该默认缓冲区大小。UTF-16中的4k字符为一个小标签提供了8K的内存 据我所知,我不能在分配文

我发现,每当我在带有HTML的JLabel上设置文本时,都会分配一个8KB的缓冲区,即使我的标签文本可能很短。再深入一点,罪魁祸首似乎在DefaultStyledDocument中:

public static final int BUFFER_SIZE_DEFAULT = 4096;
看起来每次更改文本时,都会触发一个属性更改侦听器,并分配一个新的HTMLDocument,其GapContent为该默认缓冲区大小。UTF-16中的4k字符为一个小标签提供了8K的内存

据我所知,我不能在分配文档之前更改该值。佩尔,我原以为反思可能会派上用场,但根据第二个答案,看来我运气不好。我曾考虑过在事后调整间隙缓冲区的大小,但这似乎相当棘手

有人见过这个吗?我想我得变得非常刻薄才能有机会


谢谢

我没有遇到过这个问题,但是您能使用具有指定初始长度的吗?默认构造函数使用默认缓冲区大小

public DefaultStyledDocument()
{
    this(new GapContent(BUFFER_SIZE_DEFAULT), new StyleContext());
}

因此,只需使用
新的HTMLDocument(新的GapContent(/*任何适合您的内容*/),新的StyleContext())

当然,尽管我无法找到一种简单的方法在JLabel中替换我自己的HTMLDocument。似乎简单地用HTML内容调用setText将触发一系列事件,这些事件将创建默认为4096 BUFFER_SIZE_的GapContent,并从该文档生成一个视图。如果有一种简单的方法可以用更小的内容替换文档,或者告诉它截断GapContent,那就太好了!