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

时间:2011-10-04 09:31:05

标签: java swing jpanel look-and-feel substance

我正试图在setBackground上拨打JPanel,以便它与我JFrame的颜色相匹配,但颜色比我输入的颜色要亮一些。

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

不太清楚如何获得我想要的颜色?

编辑:

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

我使用过java代码:

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color);

3 个答案:

答案 0 :(得分:11)

物质正在'着色'您的背景颜色以尝试添加主题的一些颜色。如果你使用不同的皮肤,你会得到不同的结果。例如,秋天的皮肤会使东西变成橙色。通过将客户端属性org.pushingpixels.substance.api.SubstanceLookAndFeel#COLORIZATION_FACTOR设置为1.0,可以在每个组件的组件上更改此值。例如:

frame.putClientProperty(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0)

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

这也可以全局设置......

UIManager.put(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0);

再次,取决于每个组件的覆盖。如果未设置,则默认着色因子为0.5

答案 1 :(得分: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);
    }
}

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

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

答案 2 :(得分:3)

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

使用网页http://www.pushing-pixels.org

中名为Substance.api的内容

它是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) {
                }