The following code will add row header to JTable.
//All copyright reserved by www.kidslovepc.com
//No redistribution in any form is allowed without author permission
and a back link to www.kidslovepc.com
// Example from http://www.kidslovepc.com
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
class RowHeaderRenderer extends JLabel implements
ListCellRenderer {
//customize row header.
RowHeaderRenderer(JTable table) {
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(CENTER);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
}
public Component getListCellRendererComponent(JList
list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText((value == null) ? "" : value.toString());
return this;
}
}
public class RowHeaderAll extends JList{
public RowHeaderAll(String[] headers,JTable
table) {
super(headers);
setFixedCellWidth(50);
setFixedCellHeight(table.getRowHeight());
setCellRenderer(new RowHeaderRenderer(table));
}
//Row header example
public static void main(String[] args) {
JFrame frame=new JFrame("Row Header Example");
frame.setSize(300, 150);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//create a table
String headers[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
DefaultTableModel dm = new DefaultTableModel(headers.length , 9);
JTable table = new JTable(dm);
//table header
RowHeaderAll rowHeader=new RowHeaderAll (headers,table);
JScrollPane scroll = new JScrollPane(table);
scroll.setRowHeaderView(rowHeader);
String[] corner={"Order"};
//set corner
scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER ,new RowHeaderAll(corner,table));
frame.getContentPane().add(scroll, BorderLayout.CENTER);
frame.setVisible(true);
}
}