setBackground (новый цвет ()); в java не понимает данное значение RGB - PullRequest
6 голосов
/ 14 марта 2012

После поиска в гугле в течение получаса я сдался! :)

У меня есть программа с некоторым графическим интерфейсом, на JFrame, который я установил,

 setBackground( new Color(107, 106, 104) );

[проблема] Это дает сероватый цвет, но не правильный! Если я проверяю цвет графического интерфейса в Photo Shop, он дает мне значения RGB (126, 125, 123)

Я действительно расстроен .. У кого-то есть такая же проблема?

Ps. Я пытался с HEX значением, тот же результат.

С наилучшими пожеланиями, Juri

Ответы [ 7 ]

6 голосов
/ 14 марта 2012
I have a program with some gui, on the JFrame I set,

 setBackground( new Color(107, 106, 104) );

[The problem] It gives a greyish color, but not the right one! 
If I check the gui's color in Photo Shop, it gives me the RGB 
values (126, 125, 123)

вы не можете установить setBackground для JFrame, это возможно только для ContentPane, например

JFrame#getContentPane.setBackground(new Color(107, 106, 104));

EDIT

enter image description here

из кода

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Check extends JFrame {

    private static final long serialVersionUID = 1L;

    public void makeUI() {
        JFrame f = new JFrame();
        f.getContentPane().setBackground(new Color(107, 106, 104));
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
        f.setSize(new Dimension(300, 200));
        f.setVisible(true);
    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Check().makeUI();
            }
        });
    }
}
1 голос
/ 14 марта 2012

сверьтесь с комментарием Адама и даже если он не сработает, то без какого-либо работающего кода, я просто предполагаю, что этот сценарий повышается из-за нулевого упорядочения или произнесения макета JFrame. На самом деле в java swing настройка цвета фона требует немного больше внимания, проверьте Swing Java Docs.

0 голосов
/ 21 июня 2019
 if(evt.getSource() == jMenuItem11){
        getContentPane().setBackground(new Color(170, 8, 54));
    }
    if(evt.getSource() == jMenuItem12){
        getContentPane().setBackground(new Color(8, 54, 169));
    }
    if(evt.getSource() == jMenuItem13){
       getContentPane().setBackground(new Color(84, 8, 170));
    }

}

0 голосов
/ 19 октября 2018

Первый шаг - сделать объект из jFrame:

JFrame frame = new JFrame();

Второй шаг:

frame.getContentPane().setBackground(new Color(16,144,144));
0 голосов
/ 25 марта 2018

Это сработало для меня.Надеюсь, что это поможет Код, добавляет JPanel, к текущему JFrame, вы можете в дальнейшем создать графический интерфейс на этой панели.Вы можете настроить цвета RGB на JPanel, а не на JFrame.

import javax.swing.*;
import java.awt.*;

public class Main{

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        //Class class = new Class();
        frame.setSize(1920,1080);
        //frame.setTitle("XYZ");
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);
        panel.setBackground(new Color(51,153,255));
        //panel.add(class);
    }
}
0 голосов
/ 20 ноября 2013

http://www.tayloredmktg.com/rgb/

Похоже, что серый цвет находится вверху страницы, когда вы открываете его. :) Также убедитесь, что ваш JFrame непрозрачный, иначе вы не увидите свой цвет!

setOpaque(true);
0 голосов
/ 14 марта 2012

я пробовал то, что вы объяснили; в AWT это не проблема; в качелях кажется, что фон настроен неправильно
Вы проверили, если ваш фон меняется, например, с setBackground (Color.red)?

пример кода:

import java.awt.*;
import javax.swing.*;

public class Tmp extends Frame { public static void main(String[] args) {
    //Frame tmp = new Frame();
    Frame tmp = new JFrame();
    tmp.setBackground(new Color(107, 106, 104));
    tmp.setSize(40,40);
    tmp.setVisible(true);
}}
...