2009-06-30 12 views
21

Normalmente con Java Swing è possibile impostare il colore di un pulsante di sfondo con:Come impostare il colore di sfondo di un JButton su Mac OS

myJButton.setBackground(Color.RED); 

che causerebbe il pulsante per essere rosso. Ma su Mac OS, questo metodo sembra essere ignorato. Il pulsante rimane solo il colore predefinito.

Come è possibile impostare il colore di un JButton su Mac OS?

+0

probabilmente lo farai C in qualche modo e accedi funzionalmente attraverso JNI. Odio i mac. – ldog

+1

"Solo perché il tuo unico non significa il tuo utile." – ldog

risposta

32

Hai provato a impostare JButton.setOpaque (true)?

JButton button = new JButton("test"); 
button.setBackground(Color.RED); 
button.setOpaque(true); 
+0

Grazie. Ho completamente perso la chiamata a setOpaque(). –

+4

Sembra che sia necessario aggiungere un comando setBorderPainted (false) per rendere il pulsante opaco (Java 6 su Mavericks). –

+8

Ok, questa non è la versione mac di impostazione di sfondo di Windows JButton però. Letteralmente imposta solo lo sfondo dietro al pulsante, ma su Windows il colore del pulsante può essere modificato. Come si cambia il pulsante mac grigio stesso per essere un altro colore? –

24

Hai provato a impostare il bordo dipinto falso?

JButton button = new JButton(); 
button.setBackground(Color.red); 
button.setOpaque(true); 
button.setBorderPainted(false); 

Funziona sul mio mac :)

+3

Sì, questa dovrebbe essere la risposta corretta quando si cerca di ottenere gli stessi risultati dal punto di vista di Windows. Grazie. –

+0

Questo non funziona per me su Windows 7/Java 8. La superficie del pulsante rimane grigia, solo il bit dello sfondo attorno al pulsante cambia colore. – Mischa

+0

Questa era la soluzione per me su Mac OS 10.11/Java 8. Grazie! – BNetz

17

Se non è necessario utilizzare il look di Apple e si sentono, una semplice correzione è quello di mettere il seguente codice nell'applicazione o applet, prima di aggiungere qualsiasi GUI componenti per la vostra JFrame o JApplet:

try { 
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
} catch (Exception e) { 
      e.printStackTrace(); 
} 

che imposterà l'aspetto grafico al look cross-platform e sentire, e il metodo setBackground() saranno poi lavorare per cambiare il colore di sfondo di un JButton.

+0

Penso che questa sia la risposta corretta. –

+0

Felice di aver trovato questo. Avevo bisogno sia di setLookAndFeel() che di setOpaque (true) – humanity

0

Possiedo anche un mac! qui è il codice che funziona:

myButton.setBackground(Color.RED); 
myButton.setOpaque(true); //Sets Button Opaque so it works 

prima di fare qualsiasi cosa o l'aggiunta di alcun componente impostare l'aspetto e l'atmosfera in modo che appaia meglio:

try{ 
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
}catch(Exception e){ 
    e.printStackTrace(); 
} 

che dovrebbe cambiare l'aspetto grafico al aspetto cross-platform, spero di aver aiutato! :)

+0

jojo ha risposto a questo già già – Blauhirn

+0

Non ha mai mensionato myButton.setOpaque (true); –

0

In base ai propri scopi, è possibile farlo in base a setOpaque (true/false) e setBorderPainted (true/false); prova e combinali per adattarli al tuo scopo

+0

Quante volte sentirai ripetere la stessa risposta? –

+0

Poiché diverse combinazioni ottengono risultati diversi, la pubblicano. Ok, hai ricevuto il tuo suggerimento. Grazie. – Xiaogang

Problemi correlati