Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA UI-使用高对比度主题应用windows外观_Java_Swing_User Interface_Awt - Fatal编程技术网

JAVA UI-使用高对比度主题应用windows外观

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

我有一个应用程序,它使用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文档