致力于转换/升级使用 StyledDocument 的 JTextPane 以使用 HTMLDocument(通过 HTMLEditorKit),以便窗格可以使用 HTML。基本上没问题,但有一个问题:我们曾经加载过骰子的图像,然后根据用户的喜好“重新着色”,我不知道如何制作一个 HTML<img src="...">
标签来引用我们重新着色的图像“在记忆中”。
我最初希望由于 HTMLDocument 扩展了 StyledDocument,我们可以“以我们一直这样做的方式添加图像”,但尝试 (a) 不生成图像和 (b) 往往会导致抛出异常异常“ Swing 的深处”。
那么有没有人知道一种将图像从例如我们的例子中ImageIcon
放入 HTMLDocument 的方法,以便它在适当的位置显示“内联”?我认为这需要某种<img src="...">
标签以某种方式“找到”我们的 ImageIcon?
我希望避免编写例如临时 png 文件然后将 URL 链接到的蛮力解决方案:)
这是过去添加旧图标的方式:
JTextPane chatPanel;
StyledDocument doc;
StyleContext styleContext;
StyleSheet style;
Style defaultStyle, iconStyle;
ImageIcon coloredDice[6];
JLabel label;
defaultStyle = style.getStyle(StyleContext.DEFAULT_STYLE);
iconStyle = style.addStyle("IconStyle", defaultStyle);
coloredDice[i] = new ImageIcon(ColorChanger.changeColor(dice[i], Color.white, diceColor));
label = new JLabel(coloredDice[dieRoll]);
StyleConstants.setComponent(iconStyle, label);
doc.insertString(doc.getLength(), "Ignored", iconStyle); // Insert an image into the document
新文档当然添加了更多类似的内容:
try {
kit.insertHTML(doc, doc.getLength(), "\n<div class=" + style + ">" + s + "</div>", 0, 0, null); //NON-NLS
}
catch (BadLocationException | IOException ble) {
ErrorDialog.bug(ble);
}