2012-10-26 6 views
7

La domanda è nel titolo.Come cambiare il colore di un JSeparator?

Attualmente sto facendo qualcosa di simile:

jSperator = new JSeparator(); 
jSeparator1.setForeground(new java.awt.Color(255, 51, 51)); 

Ma il separatore di mantenere il suo colore di default, qualcosa di simile a 212.212.212.

risposta

11

devono cambiare ’Background’ anziché ’Foreground’

logiche potrebbe essere diverso per Nimbus Look and Feel

metallo L & F

enter image description here

import javax.swing.*; 
import java.awt.*; 

public class GridBagSeparator1 { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("Laying Out Components in a Grid"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JSeparator sep = new JSeparator(SwingConstants.HORIZONTAL); 
     sep.setBackground(Color.black); 
     JSeparator sep1 = new JSeparator(SwingConstants.HORIZONTAL); 
     sep1.setBackground(Color.blue); 
     JSeparator sep2 = new JSeparator(SwingConstants.HORIZONTAL); 
     sep2.setBackground(Color.green); 
     JSeparator sep3 = new JSeparator(SwingConstants.HORIZONTAL); 
     sep3.setBackground(Color.red); 

     frame.setLayout(new GridLayout(4, 0)); 
     frame.add(sep); 
     frame.add(sep1); 
     frame.add(sep2); 
     frame.add(sep3); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
+2

Cambiare lo sfondo non lo risolve. Sto usando Matiss, il costruttore di GUI Netbeans per costruire l'interfaccia su mac. Forse è una limitazione del look and feel. – nathan

+4

Potrebbe essere necessario utilizzare 'UIManager' e modificare' Separator.foreground' – trashgod

+4

Con Sythetica Look And Feel, ho dovuto modificare lo sfondo E impostare la proprietà opaque su true. –

4

Il JSeparator a 2 colori, uno per la linea, una per l'ombra. È possibile modificare entrambi, impostando i colori rispettivamente sullo sfondo e sul primo piano.

JSeparator sep = new JSeparator(); 
sep.setForeground(Color.green); // top line color 
sep.setBackground(Color.green.brighter()); // bottom line color