2012-03-14 17 views
6

¡Después de buscar en Google durante media hora, me rendí! :)setBackground (color nuevo()); en java no entiende el valor RGB dado

Tengo un programa con un poco de interfaz gráfica de usuario, en el JFrame que establecer,

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

[El problema] Se da un color grisáceo, pero no la correcta! Si compruebo el color de la interfaz gráfica en Photo Shop, me da los valores RGB (126, 125, 123)

Estoy realmente frustrado ... ¿Alguien tiene el mismo problema?

Ps. He intentado con el valor HEX, el mismo resultado.

Saludos, Juri

+2

Para una mejor ayuda antes, publique un [SSCCE] (http://sscce.org/). –

+0

Espero que ese color sea gris porque los valores RGB están muy cerca. Los colores entre 0,0,0 (negro) y 255,255,255 (blanco) son "grises", siempre que cada valor sea "similar" – Adam

+0

¿Podría ser porque java usa sRGB en lugar de RGB? : P –

Respuesta

5
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) 

no se puede establecer setBackground para JFrame, esto sólo es posible para ContentPane, por ejemplo

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

EDITAR

enter image description here

de código

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

¿Está en el constructor de una clase que extiende JFrame? –

+0

@JW_ por favor vea mi edición aquí – mKorbel

+0

Argg .. ¿Cómo formateo mi código aquí? : S –

1

de verificación con el comentario de Adán y aunque no trabajadas a continuación, sin ningún código de trabajo sólo estoy adivinando que este escenario se está levantado por orden cero o diciendo disposición del JFrame. En realidad, en java swing, configurar el color de fondo necesita un poco más de atención, consulte los documentos de Swing Java.

+0

Ty, estoy investigando ahora mismo. –

0

intenté con lo que me explicaste; en cierto modo no es problema; en oscilación, parece que el fondo no está configurado correctamente
¿Ha revisado, si su fondo cambia, p. con setBackground (Color.red)?

Código ejemplo:

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

Sí, cambia como debería ... –

0

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

Parece que es de color gris en la parte superior de la página riht cuando se abre. :) ¡También asegúrese de que su JFrame sea opaco o no verá su color!

setOpaque(true); 
Cuestiones relacionadas