gpt4 book ai didi

java - 在 java swing 中自定义默认的 html 链接颜色

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:50 25 4
gpt4 key购买 nike

Swing 允许在 JLabel 等组件中使用 html。 This文档详细讨论了这一点。它还显示了如何更改特定文本的颜色。

我正在使用一个包含数千个此类组件的现有 swing 应用程序。我想在使用链接的地方更改链接的颜色。一次做一个会非常乏味。默认情况下,如果未指定颜色,swing 似乎将它们呈现为蓝色。

如何将此默认值更改为其他值?

最佳答案

所以,在深入研究代码之后,我学会了...

  1. HTML 由 HTMLEditorKit 和相关 API 呈现
  2. HTMLEditorKit 使用的默认样式表在 AppContext 中集中/全局维护...

来自 HTMLEditorKit#getStyleSheet

 AppContext appContext = AppContext.getAppContext();
StyleSheet defaultStyles = (StyleSheet) appContext.get(DEFAULT_STYLES_KEY);

这很重要,因为它意味着,您不必花很多时间来尝试查看标签的外观代码,而且您应该能够在一个地方更改全局样式表并影响一切都是如何呈现的...这可能是好事也可能是坏事...

下一个问题是,您实际上无法访问 AppContext 中的 StyleSheet,因为 DEFAULT_STYLES_KEY 是一个 private static最终对象...

这意味着您必须创建一个实例 HTMLEditorKit 并使用 getStyleSheet 来获取对它的引用...

Link

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
import sun.awt.AppContext;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

HTMLEditorKit kit = new HTMLEditorKit();
StyleSheet styleSheet = kit.getStyleSheet();
styleSheet.addRule("a {color:#ff0000;}");

JLabel label = new JLabel("<html><a href=http://stackoverflow.com/questions/tagged/java>Stackoverflow</a></html>");

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

}

关于java - 在 java swing 中自定义默认的 html 链接颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26749495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com