gpt4 book ai didi

java - UIManager.getDefauts() 和 UIManager.getLookAndFeelDefaults() 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 08:00:30 26 4
gpt4 key购买 nike

我正在尝试将 Nimbus LookandFeel 值覆盖到我的 Java Swing 应用程序。

当我尝试使用 UIManager.getLookAndFeelDefaults() 设置“nimbusSelectionBackground”和“Table.background”值进行更改时,如下所示。

UIDefaults jDefaults = UIManager.getLookAndFeelDefaults();

//change nimbusL&F Selection Background color
jDefaults.put("nimbusSelectionBackground", mySelectionBackgroundColor);

//change Table Background color
jDefaults.put("Table.background", myTableBackgroundColor);

//update ui trees
for(Window window : Window.getWindows()){
SwingUtilities.updateComponentTreeUI(window);
}

这适用于“Table.background”,但不适用于“nimbusSelectionBackground”;

但是当我使用 UIManager.getDefauts() 来更改 defaultFont 值时,如下所示。

UIDefaults jDefaults = UIManager.getDefaults();

//change nimbusL&F Selection Background color
jDefaults.put("nimbusSelectionBackground", mySelectionBackgroundColor);

//change Table Background color
jDefaults.put("Table.background", myTableBackgroundColor);

//update ui trees
for(Window window : Window.getWindows()){
SwingUtilities.updateComponentTreeUI(window);
}

这对他们俩来说都是完美的。

所以我的问题是为什么? UIManager.getDefauts() 和 UIManager.getLookAndFeelDefaults() 有什么区别?

最佳答案

谢谢你的提问。看了代码,我的理解是这样的:

  1. getLookAndFeelDefaults 返回由 NimbusLookAndFeel 在初始化时创建的 UIDefaults。 Nimbus 本身并不监视该表的更改。但是,每当组件请求时,UIManager 都会从该表中给出一个值,然后再查看其维护的值。因此,所有标准组件 UI 默认值都可以通过更改此表来修改。
  2. getUIDefaults 返回由 UIManager 创建的 UIDefaults。该表由 Nimbus 监控(使用 PropertyChangeListener),并且 Nimbus 更新其内部默认值。 Nimbus 将这些内部值用于 UI,并且不会引用回 UIManager 来获取值。

也就是说,根据 getLookAndFeelDefaults 的 java 文档,我们应该只使用 getUIDefaults 并且它与您的体验一致。

关于java - UIManager.getDefauts() 和 UIManager.getLookAndFeelDefaults() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010306/

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