挫折背景(新颜色());在java中,不理解给定的RGB值
我有一个带有gui的程序,在我设置的JFrame上挫折背景(新颜色());在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
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));
}