0

致力于转换/升级使用 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);
}
4

0 回答 0