Вещество Look and Feel делает мои цвета ярче? - PullRequest
14 голосов
/ 04 октября 2011

Я пытаюсь вызвать setBackground на JPanel, чтобы он соответствовал цвету моего JFrame, но этот цвет немного ярче, чем тот, который я набираю.

Я пытался установить HSB, RGB, HEX код, все они дают мне один и тот же цвет, более яркую версию моего цвета.

Не совсем знаю, как получить нужный мне цвет?

edit:

Я получаю свои цвета из Photoshop.Я ищу нужные цвета (которые я хочу) и копирую код HSB RGB или HEX.Выглядит так, как должно быть в Photoshop, но Java дает мне более яркий цвет? enter image description here

Я использовал код Java:

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color);

Ответы [ 3 ]

11 голосов
/ 06 октября 2011

Вещество «раскрашивает» цвета вашего фона, чтобы попытаться добавить немного цвета темы.Если бы вы использовали разные скины, вы бы получили разные результаты.Например, осенняя кожа сделала бы вещи очень оранжевыми.Это можно изменить для каждого компонента отдельно, установив для свойства клиента 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.

6 голосов
/ 04 октября 2011

Этот 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.

3 голосов
/ 04 октября 2011

Итак, я нашел проблему. Это на самом деле немного раздражает, и я, вероятно, должен был добавить это в вопрос, но я никогда не думал, что это вызывает проблему.

Похоже, что с веб-страницы называется 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) {
                }
...