物质外观和感觉使我的颜色更明亮?

2022-09-04 02:01:58

我试图调用一个,以便它与我的颜色相匹配,但是颜色比我输入的颜色要亮一些。setBackgroundJPanelJFrame

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

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

编辑:

我从Photoshop获得我的颜色。我查找正确的颜色(我想要的)并复制HSB RGB或十六进制代码。它在Photoshop中看起来应该如此,但是java给了我更明亮的颜色?enter image description here

我用过java代码:

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color);

答案 1

实质是“着色”你的背景颜色,以尝试添加一些主题的颜色。如果您使用不同的皮肤,则会得到不同的结果。例如,秋天的皮肤会让东西变得非常橙色。通过将客户端属性设置为 ,可以在每个组件的基础上更改此属性。例如: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


答案 2

此 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);
    }
}

也许这有助于向您展示应该如何设置颜色以获得所需的颜色?

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


推荐