【发布时间】:2022-01-08 05:53:59
【问题描述】:
我是一些JComponent 扩展的作者。我写了一些示例组件。
在一个示例组件中,我只是用预定义的子组件填充它们:
public class JSwingExample02 extends JComponent {
public JSwingExample02() {
populate();
}
private void populate() {
setLayout(new BorderLayout());
JLabel jLabel = new JLabel("Hello World!");
add(jLabel, BorderLayout.CENTER);
}
在其他组件中,我从头开始绘制它们
@Override protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.fillOval(10, 10, 100, 100);
}
现在我的组件是通过第三方代码(IDEA 插件)使用的,它为其应用了颜色主题:尽管我没有任何颜色代码行,但我的组件显示为“深色主题”。
例如
即文字是白色的。
我如何聆听这些颜色,即事先知道它们,例如,如果我想用它们明确地绘制一些东西?
【问题讨论】:
-
实现一个自定义监听器并让这些组件注册监听器。覆盖相关方法(例如
setBackground(Color bg))来触发这些监听器。 -
听什么?
-
对不起。我不明白你的问题。你的意思是应该听哪些方法?
-
尝试通过
UIManager.getLookAndFeel();获取自定义组件的LAF你也可以通过UIManager.addPropertyChangeListener监听LAF的变化 -
在
UIManager中监听哪个属性?