gpt4 book ai didi

java - 无法更改 Mac OS 外观中的 JProgressBar 颜色

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

我知道这个问题以前有人回答过,但它对我不起作用。我按照这里的说明操作:How to change JProgressBar color?

import javax.swing.*;
import java.awt.*;

public class ProgressBarTest extends JFrame {

public static void main(String args[]) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
UIManager.put("ProgressBar.background", Color.orange);
UIManager.put("ProgressBar.foreground", Color.black);
UIManager.put("ProgressBar.selectionBackground", Color.red);
UIManager.put("ProgressBar.selectionForeground", Color.green);
JProgressBar progressBar = new JProgressBar(0,100);
progressBar.setValue(50);
f.add(progressBar, BorderLayout.PAGE_END);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

}

我得到的只是相同的旧颜色。

AquaProgressBarUI

我使用的是 Mac OS X 10.7.3 和 Java 1.6。我尝试了 CrossPlatformLookAndFeel 并且它适用于新颜色。但是我希望它具有默认的外观和感觉。我该怎么做?

最佳答案

要覆盖外观和感觉默认值,请在event dispatch thread 上构建 GUI 时进行更改。 ,如下图。

com.apple.laf.AquaLookAndFeel 上,进度条的 UI 委托(delegate)是 com.apple.laf.AquaProgressBarUI 的一个实例。正如您所发现的,它忽略了许多有利于 native 组件的默认值。如果需要新颖的配色方案,请考虑提供您自己的 UI 委托(delegate),如图所示 here .

AquaProgressBarUI:

AquaProgressBarUI

CustomProgressUI:

CustomProgressUI

ProgressBar UI 默认值:

ProgressBar.background: com.apple.laf.AquaNativeResources$CColorPaintUIResource[r=238,g=238,b=238]ProgressBar.border: javax.swing.plaf.BorderUIResource@47f08ed8ProgressBar.cellLength: 1ProgressBar.cellSpacing: 0ProgressBar.cycleTime: 3000ProgressBar.font: sun.swing.SwingLazyValue@6446d228ProgressBar.foreground: javax.swing.plaf.ColorUIResource[r=0,g=0,b=0]ProgressBar.horizontalSize: javax.swing.plaf.DimensionUIResource[width=146,height=12]ProgressBar.repaintInterval: 20ProgressBar.selectionBackground: javax.swing.plaf.ColorUIResource[r=255,g=255,b=255]ProgressBar.selectionForeground: javax.swing.plaf.ColorUIResource[r=0,g=0,b=0]ProgressBar.verticalSize: javax.swing.plaf.DimensionUIResource[width=12,height=146]ProgressBarUI: com.apple.laf.AquaProgressBarUI

SSCCE:

import java.awt.*;
import javax.swing.*;

public class ProgressBarTest extends JFrame {

public static void main(String args[]) {
UIManager.put("ProgressBar.repaintInterval", 100);
UIManager.put("ProgressBar.border",
BorderFactory.createLineBorder(Color.blue, 2));
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
JFrame f = new JFrame();
f.setLayout(new GridLayout(0, 1, 5 , 5));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(createBar());
f.add(createBar());
f.add(createBar());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

private JProgressBar createBar() {
JProgressBar progressBar = new JProgressBar(0, 100);
progressBar.setValue(50);
return progressBar;
}
});
}
}

关于java - 无法更改 Mac OS 外观中的 JProgressBar 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148120/

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