2011-10-04 9 views
14

Sto cercando di chiamare setBackground su un JPanel, in modo che corrisponda il colore della mia JFrame, ma il colore è in qualche modo più brillante di quella digito.Sostanza Look and Feel sta rendendo i miei colori più brillanti?

ho provato a fissare HSB, RGB , Codice HEX, mi danno tutti lo stesso colore, una versione più brillante del mio colore.

Non so come ottenere il colore che voglio?

edit:

ottengo i miei colori da Photoshop. Cerco i colori giusti (che voglio) e copio il codice HSB RGB o HEX. Sembra come dovrebbe in Photoshop, ma java mi dà un colore più luminoso? enter image description here

Ho usato il codice Java:

Color color = new Color(0x94b3c7); 

    jpanel.setBackground(color); 
+11

Java ti rende più luminoso :) – dacwe

+7

È necessario fornire un [SSCCE] (http://sscce.org). – aioobe

+1

Ottenete un upvote per il titolo, ma * dovete * fornire un esempio (come noto aioobe) * e * devono dirci da dove avete ottenuto il valore, * quale * colore provate a impostare e * perché * voi penso che dovrebbe apparire diverso da quello che fa. Ha un valore alfa? –

risposta

11

sostanza è 'colorare' i tuoi colori di sfondo per cercare di aggiungere un po 'di colore del tema. Se hai usato skin diversi, otterresti risultati diversi. La pelle autunnale, ad esempio, renderebbe le cose molto arancioni. Questo può essere modificato su un componente per componente impostando la proprietà client org.pushingpixels.substance.api.SubstanceLookAndFeel#COLORIZATION_FACTOR su 1.0. Per esempio:

frame.putClientProperty(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0) 

Questo indicherà al pittore fondali di utilizzare il 100% del colore di sfondo specificato dall'utente, invece di usare il 50% del colore.

Questo può anche essere impostata globalmente ...

UIManager.put(SubstanceLookAndFeel.COLORIZATION_FACTOR, 1.0); 

ancora, a ogni sostituzioni di componenti. Se non impostato, il fattore di colorazione predefinito è 0.5.

+0

Grande! Lo testerò subito, il più vicino otterrò una risposta su questa domanda penso. – Handsken

6

Questa SSCCE mostra il colore nel vostro Photoshop campione:

public class ColorTest { 

    public static void main(String[] args) { 
     JLabel label = new JLabel("Java Color"); 
     label.setFont(label.getFont().deriveFont(20f)); 
     label.setForeground(Color.WHITE); 
     label.setBackground(new Color(0x94b3c7)); 
     label.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); 
     label.setOpaque(true); 

     JPanel jpanel = new JPanel(); 
     jpanel.setOpaque(true); 
     jpanel.add(label); 
     jpanel.setBackground(Color.GREEN); 

     JFrame frame = new JFrame(); 
     frame.setContentPane(jpanel); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

Forse questo aiuta a rivelare a voi come si dovrebbe essere l'impostazione del colore a prendi ciò che vuoi?

Modifica: ora è stata aggiunta un'impostazione esplicita di opaco per provare a risolvere il problema della sostanza L &.

+1

Ottimo! Ho provato il tuo codice e ho ottenuto il colore corretto. Ho preso un po 'di scouting nel mio codice ma penso di aver trovato il problema. Im usando una skin per il mio JFrame: 'import org.pushingpixels.substance.api.skin.SubstanceBusinessBlueSteelLookAndFeel;' – Handsken

+0

E quando non uso la JFrame di aspetto migliore funziona, ma poi non ne ho bisogno per funzionare . In non contento della verità :( – Handsken

+1

Questo potrebbe essere un problema "opaco" Ho modificato il mio codice di esempio per includere l'impostazione opaque su true sia su JPanel che su JLabel. Il pannello dovrebbe ora essere verde, con l'etichetta il colore desiderato (0x94b3c7) –

3

Quindi ho trovato il problema. In realtà è un po 'fastidioso, e probabilmente avrei dovuto aggiungere questo nella domanda, ma non avrei mai pensato che questo causasse il problema.

Se im utilizzando qualcosa chiamato Substance.api dalla pagina web http://www.pushing-pixels.org

sua una Colorskin per l'interfaccia grafica, la mia intenzione era quella di cambiare il colore del JFrame, ma invece ho cambiato tutta la prova colore.

Quindi se qualcuno sa come cambiare il colore JFrame, hawla me! :)

Questo è il codice bandito:

public static void main(String[] args) { 

     JFrame.setDefaultLookAndFeelDecorated(true); 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(new SubstanceRavenLookAndFeel()); 

       } catch (Exception e) { 
       } 
Problemi correlati