JAVA UI-使用高对比度主题应用windows外观
我有一个应用程序,它使用windows的外观和感觉。 一旦我将windows的主题更改为高对比度主题,即使设置了默认颜色,我的所有应用程序颜色也会随之更改。 谁能告诉我一个可行的办法吗 AVA UI-应用具有高对比度主题的windows外观 每个L&F都有责任为Swing定义的每个ComponentUI子类提供具体的实现。例如,Java外观创建了MetaltabedPaneUI的实例,以提供JTabbedPane的L&F。UI委托的实际创建由Swing处理,因为在大多数情况下,您不需要直接与UI委托交互 在创建框架/对话框之前,请尝试打开这两个选项:JAVA UI-使用高对比度主题应用windows外观,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我有一个应用程序,它使用windows的外观和感觉。 一旦我将windows的主题更改为高对比度主题,即使设置了默认颜色,我的所有应用程序颜色也会随之更改。 谁能告诉我一个可行的办法吗 AVA UI-应用具有高对比度主题的windows外观 每个L&F都有责任为Swing定义的每个ComponentUI子类提供具体的实现。例如,Java外观创建了MetaltabedPaneUI的实例,以提供JTabbedPane的L&F。UI委托的实际创建由Swing处理,因为在大多数情况下,您不需要直接与UI
AnyJavaContainers.setDefaultLookAndFeelDecorated ( true );
//For exapmle:
JDialog.setDefaultLookAndFeelDecorated ( true );
JFrame.setDefaultLookAndFeelDecorated ( true );
在LAF更改之前创建的组件可以知道它
SwingUtilities.updateComponentTreeUI(someComponent);
JFileChooser窗口L&F:&
更多
使用Darryl的Swing Utils可以对Java Swing进行更多的自定义控制
应用
下载Darryl的Swing Utils,阅读描述,然后运行(Darryl的)代码,结果是选择JFileChooser(如果您从我的答案中理解并批准为正确答案,我将投票支持这个问题)
例如
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;
import javax.swing.plaf.metal.MetalButtonUI;
public class CrazyFileChooser {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CrazyFileChooser().makeUI();
}
});
}
public void makeUI() {
JFileChooser chooser = new JFileChooser();
for (AbstractButton button : SwingUtils.getDescendantsOfType(AbstractButton.class, chooser)) {
button.setUI(new XORButtonUI());
}
for (JList list : SwingUtils.getDescendantsOfType(JList.class, chooser)) {
list.setBackground(Color.PINK);
}
chooser.showOpenDialog(null);
}
}
class XORButtonUI extends MetalButtonUI {
@Override
public void paint(Graphics g, JComponent c) {
g.setXORMode(Color.YELLOW);
super.paint(g, c);
}
}
我同意你的观点,但我最担心的是:假设我们有一个文件选择器,我在UIManager中应用了所有颜色,但当文件选择器打开时,文件内容显示黑色背景,这是因为它选择了windows颜色,那么,有没有办法只挑选外观而不挑选colors@RishabhKhandelwal我用一些类似的示例和第三方库更新了我的答案,如果您仍然找不到问题,请用代码更新您的问题,然后我就把您的问题放在这里,不过我建议您查看Java UIManager类和oracle L&F文档