gpt4 book ai didi

JAVA UI - 应用窗口外观和高对比度主题

转载 作者:行者123 更新时间:2023-12-02 12:08:45 25 4
gpt4 key购买 nike

我有一个使用 Windows 外观的应用程序。一旦我将窗口主题更改为高对比度主题,即使我设置了默认颜色,我所有的应用程序颜色也会发生变化。谁能告诉我解决方法。

最佳答案

AVA UI - Applying windows look and feel with High contrast theme

每个 L&F 都有责任为 Swing 定义的每个 ComponentUI 子类提供具体的实现。例如,Java 外观创建 MetalTabbedPaneUI 的实例来为 JTabbedPane 提供 L&F。 UI 委托(delegate)的实际创建由 Swing 为您处理 - 大多数情况下您不需要直接与 UI 委托(delegate)交互。

在创建框架/对话框之前尝试打开这两个选项:

AnyJavaContainers.setDefaultLookAndFeelDecorated ( true );
//For exapmle:
JDialog.setDefaultLookAndFeelDecorated ( true );
JFrame.setDefaultLookAndFeelDecorated ( true );

在 LAF 更改之前创建的组件可以知道它

SwingUtilities.updateComponentTreeUI(someComponent);

JFileChooser 窗口 L&F:similar example No 1 & similar example No 2

了解更多How to Set the Look and Feel and How It's works -By Oracle Documentation

Using Darryl's Swing Utils more customize controle over Java Swing Application

下载 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);
}
}

关于JAVA UI - 应用窗口外观和高对比度主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708223/

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