Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Make JTable cell 'Look and feel' like a JTable header with a renderer

843805Feb 3 2006 — edited Feb 3 2006
Hi
I have the following class which i use to make a set of cells look the same as the table header. This worked fine, and the cells appeared exactly as the header. The problem is that now im using a custom look and feel manager and i cant get the cells to be rendered as they would if they table header cells.

Any ideas please ?
Thanks
import javax.swing.JTable;
import javax.swing.JLabel;
import javax.swing.ListCellRenderer;
import java.awt.Component;
import javax.swing.table.JTableHeader;
import javax.swing.UIManager;
import javax.swing.JList;
import javax.swing.table.TableCellRenderer; 
import javax.swing.table.DefaultTableCellRenderer;

//this class just renders the rows like the headers
class RowRenderer extends JLabel implements TableCellRenderer {
  
private DefaultTableCellRenderer iRender = new DefaultTableCellRenderer(); 
private String[] r = null;
  
RowRenderer(JTable table,String[] rows) {
    JTableHeader header = table.getTableHeader();
    //setOpaque(false); 
    setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    setHorizontalAlignment(CENTER);
    setForeground(header.getForeground());
    setBackground(header.getBackground());
    setFont(header.getFont());
    r = rows;
  }
  
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    Component cell = iRender.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    setText(r[row]);
    return this; }

}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 3 2006
Added on Feb 3 2006
4 comments
113 views