java - 如何修改 HTML JLabel 以使用小于 8k 的缓冲区?

标签 java html swing jlabel

我发现每当我使用 HTML 在 JLabel 上设置文本时,都会分配一个 8KB 缓冲区,即使我的标签文本可能很短。仔细研究一下,看起来罪魁祸首在于 DefaultStyledDocument:

public static final int BUFFER_SIZE_DEFAULT = 4096;

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

据我所知,在分配文档之前我无法更改该值。根据 Change private static final field using Java reflection,我认为反射可能会派上用场,但根据第二个答案,我似乎运气不好。我考虑过事后调整间隙缓冲区的大小,但这似乎很棘手。

有人遇到过这个吗?我预计我将不得不变得非常黑客才能有机会......

谢谢!

最佳答案

我没有遇到过这个,但你能用 this constructor 吗?使用 GapContent具有指定的初始长度?默认构造函数使用默认缓冲区大小。

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

所以只需使用 new HTMLDocument(new GapContent(/*whatever works for you*/), new StyleContext())

关于java - 如何修改 HTML JLabel 以使用小于 8k 的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237700/

相关文章:

javascript - 用文本动态扩展 <input> 元素

html - 使用 css 动画在循环中无缝移动箭头

java swing 按住两个鼠标按钮

java - JUnit FilterRequest 未创建过滤测试

java - 数组索引超出java堆范围

javascript - jQuery 中的 Accordion 菜单

java - 抽象表模型

java - 如何在 Java 中使用 KeyPressed

java - 如何使用java检查值是否位于矩形范围内

java - Spring Profiles 和 Spring Boot Profiles 是一样的吗?