JTableHeader Opaque

Status
Nicht offen für weitere Antworten.

Oni

Top Contributor
Servus,

habe das Problem, dass ich den JTableHeader nicht transparent bekommen (bei allem anderen geht es).
Hat einer eine Idee, wie ich das lösen kann?

Code:
JTable table = new JTable();
table.setOpaque(false);

JTableHeader header = table.getTableHeader();  
header.setOpaque(false);

JScrollPane pane = new JScrollPane(table);		
pane.setOpaque(false);
pane.getViewport().setOpaque(false);
panel.add(pane, BorderLayout.CENTER);
 

André Uhres

Top Contributor
Code:
       header.setDefaultRenderer(new TransparentRenderer());
...
class TransparentRenderer extends JLabel implements TableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        setText(value.toString());
        setBorder(BorderFactory.createLineBorder(Color.GRAY));
        setHorizontalAlignment(JLabel.CENTER);
        return this;
    }
}
Beispiel: TransparentDemo.jar (Quellcode im jar)
 

Oni

Top Contributor
Super, danke dir.

So ähnlich hatte ich das auch schon probiert, aber das hat mir gefehlt. Beim Erzeugen war der ColumnHeader noch null, deshalb kam ich nicht darauf, dass er zur Laufzeit gesetzt ist.
Code:
SwingUtilities.invokeLater(new Runnable() {
	 		public void run() {
	 			pane.getColumnHeader().setOpaque(false); // JScrollpane
	 		}
	 	});
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben