2012-03-14 19 views
6

Po wyszukaniu google przez pół godziny zrezygnowałem! :)setBackground (nowy kolor()); w java nie rozumie podanej wartości RGB

Mam program z jakiegoś GUI na JFrame ustawić,

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

[Problem] Daje szary kolor, ale nie w sam raz! Jeśli sprawdzę kolor gui w Photo Shop, daje mi to wartości RGB (126, 125, 123)

Jestem naprawdę sfrustrowany .. Ktoś ma ten sam problem?

Ps. Próbowałem z wartością HEX, ten sam wynik.

poważaniem, Juri

+2

Aby uzyskać lepszą pomoc wcześniej, opublikuj [SSCCE] (http://sscce.org/). –

+0

Spodziewam się, że kolor będzie szary, ponieważ wartości RGB są tak blisko. Kolory pomiędzy 0,0,0 (czarny) i 255,255,255 (biały) są "szare", o ile każda wartość jest "podobna". – Adam

+0

Czy to możliwe, ponieważ java używa sRGB zamiast RGB? : P –

Odpowiedz

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) 

nie można ustawić setBackground dla JFrame, jest to możliwe tylko dla ContentPane np

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

EDIT

enter image description here

z kodu

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

Jest w konstruktorze klasy, która rozszerza JFrame? –

+0

@JW_ zobacz moją edycję tutaj – mKorbel

+0

Arg .. W jaki sposób mogę tutaj sformatować mój kod? : S –

1

kontrolne z komentarzem Adama i nawet jeśli nie pracowali wówczas bez jakiegokolwiek kodeksu pracy jestem tylko zgadywać, że ten scenariusz jest coraz podniesiony należytej zerowy zamawiania lub mówiąc układ JFrame. W rzeczywistości w java swing, ustawienie koloru tła wymaga trochę więcej uwagi, sprawdź Swing Java Docs.

+0

Ty, ja patrzę teraz na to. –

0

Próbowałem, co wyjaśniłeś; w awt to nie problem; podczas obrotu wydaje się, że tło nie jest ustawione prawidłowo
czy sprawdziłeś, czy twoje tło się zmieniło, np. z setBackground (Color.red)?

przykładem Kod:

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

Tak, zmienia się tak jak powinna. –

0

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

To wygląda szaro jest w górnej części riht strony kiedy go otworzyć. :) Upewnij się także, że ramka JFrame jest nieprzezroczysta lub nie zobaczysz swojego koloru!

setOpaque(true);