Вещество Look and Feel делает мои цвета ярче?

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

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

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

редактировать:

Я получаю свои цвета из фотошопа. Я ищу правильные цвета (которые я хочу) и копирую код HSB RGB или HEX. Это выглядит так, как должно быть в фотошопе, но ява дает мне более яркий цвет?

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

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color);

3 ответа

Решение

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

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

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

Я использую то, что называется Substance.api с веб-страницы http://www.pushing-pixels.org/

Это цветная шкура для графического интерфейса. Я намеревался изменить цвет 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) {
                }
Другие вопросы по тегам