Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
挫折背景(新颜色());在java中,不理解给定的RGB值_Java_Swing_Hex_Rgb_Setbackground - Fatal编程技术网

挫折背景(新颜色());在java中,不理解给定的RGB值

挫折背景(新颜色());在java中,不理解给定的RGB值,java,swing,hex,rgb,setbackground,Java,Swing,Hex,Rgb,Setbackground,我有一个带有gui的程序,在我设置的JFrame上 setBackground( new Color(107, 106, 104) ); 问题是我得到的是灰色,但不是正确的颜色。如果我在PhotoShop中检查它,它会给出RGB值(126125123) 注:我试过使用十六进制值,结果是一样的。检查Adam的评论,即使没有任何工作代码,我只是猜测,由于JFrame的零顺序或布局,这种情况正在出现。 实际上,在JavaSwing中,设置背景颜色需要更多的注意,请查看SwingJavadocs I

我有一个带有gui的程序,在我设置的JFrame上

 setBackground( new Color(107, 106, 104) );
问题是我得到的是灰色,但不是正确的颜色。如果我在PhotoShop中检查它,它会给出RGB值(126125123)


注:我试过使用十六进制值,结果是一样的。

检查Adam的评论,即使没有任何工作代码,我只是猜测,由于JFrame的零顺序或布局,这种情况正在出现。 实际上,在JavaSwing中,设置背景颜色需要更多的注意,请查看SwingJavadocs

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)
您不能为
JFrame
设置
setBackground
,例如,这仅适用于
ContentPane

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

源代码

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

我试过你解释的;在awt中没有问题;在swing中,背景设置似乎不正确
您是否检查过您的背景是否发生了变化,例如背景发生了变化(颜色为红色)

示例代码:

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

打开页面时,页面顶部似乎是灰色的。:) 还要确保你的JFrame是不透明的,否则你看不到你的颜色

setOpaque(true);
这对我很有效。 希望有帮助 代码在当前JFrame中添加了一个JPanel,您可以在此面板上进一步构建GUI。您可以在JPanel而不是JFrame上自定义RGB颜色


第一步-创建
jFrame
的对象:

JFrame frame = new JFrame();
第二步:

frame.getContentPane().setBackground(new Color(16,144,144));

}

为了更快地获得更好的帮助,请发布一个。我希望颜色是灰色的,因为RGB值非常接近。0,0,0(黑色)和255255(白色)之间的颜色是“灰色”的,只要每个值都是“相似的”,这可能是因为java使用sRGB而不是RGB吗官方的错误追踪器。这真的不是一个bug,而是在一个类的构造函数中扩展了JFrame?mKorbel,我已经测试了你的代码,它工作起来很有魅力。但我现在的做法行不通,我也不明白为什么。@JW_u这就是我们要求的原因,没人知道…:-)@mKorbel的结果通过使用验证。我怀疑这是一个错误的复合模式。在setBackground()上调用getContentPane()是正确的答案()不要只发布代码,添加一个解释以便读者更好地理解您的答案请不要只发布代码答案。你需要解释你的代码是做什么的/它是如何解决问题的。即使你认为这个问题已经足够好了,这个网站也需要保持一定的最低评论标准,这是有原因的。
frame.getContentPane().setBackground(new Color(16,144,144));
 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));
    }