14

我正在尝试调用setBackgrounda JPanel,以便它与 my 的颜色相匹配JFrame,但颜色比我输入的颜色要亮一些。

我尝试过设置 HSB、RGB、HEX 代码,它们都给我相同的颜色,是我颜色的更亮版本。

不知道如何获得我想要的颜色?

编辑:

我从 Photoshop 中获取颜色。我查找正确的颜色(我想要的)并复制 HSB RGB 或 HEX 代码。它在 Photoshop 中看起来应该是这样,但是 java 给了我更亮的颜色?在此处输入图像描述

我使用了java代码:

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color);
4

3 回答 3

11

Substance 正在“着色”您的背景颜色以尝试添加一些主题颜色。如果你使用不同的皮肤,你会得到不同的结果。例如,秋天的皮肤会使事情变得非常橙色。这可以通过将 client 属性设置org.pushingpixels.substance.api.SubstanceLookAndFeel#COLORIZATION_FACTOR1.0. 例如:

frame.putClientProperty(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0)

这将指示背景画家使用 100% 的用户指定背景颜色,而不是使用 50% 的颜色。

这也可以全局设置...

UIManager.put(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0);

再次,受每个组件覆盖。如果未设置默认着色因子为0.5.

于 2011-10-06T15:28:43.837 回答
6

此 SSCCE 显示 Photoshop 示例中的颜色:

public class ColorTest {

    public static void main(String[] args) {
        JLabel label = new JLabel("Java Color");
        label.setFont(label.getFont().deriveFont(20f));
        label.setForeground(Color.WHITE);
        label.setBackground(new Color(0x94b3c7));
        label.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
        label.setOpaque(true);

        JPanel jpanel = new JPanel();
        jpanel.setOpaque(true);
        jpanel.add(label);
        jpanel.setBackground(Color.GREEN);

        JFrame frame = new JFrame();
        frame.setContentPane(jpanel);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

也许这有助于向您揭示您应该如何设置颜色以获得您想要的?

编辑:现在添加了不透明的显式设置以尝试解决 Substance L&F 问题。

于 2011-10-04T11:44:57.823 回答
3

所以我发现了问题所在。这实际上有点烦人,我可能应该在问题中添加这个,但我从没想过这是导致问题的原因。

Substance.api我正在使用从网页http://www.pushing-pixels.org调用的东西

它是 GUI 的颜色皮肤,我的意图是更改 JFrame 的颜色,但我更改了整个颜色证明。

因此,如果有人知道如何更改 JFrame 颜色,请对我大吼!:)

这是强盗代码:

public static void main(String[] args) {

    JFrame.setDefaultLookAndFeelDecorated(true);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {
                UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel());
            } catch (Exception e) {
            }
        }
    });
}
于 2011-10-04T19:02:26.550 回答