public Table(Database db, Log log, JFrame mainFrame){
this.mainFrame = mainFrame;
this.db = db;
this.log = log;
setLayout(new BorderLayout());
tb = new ToolBar(db,mainFrame,this,log);
add(tb,BorderLayout.NORTH);
table = new JXTable();
table.setColumnControlVisible(true);
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){
private Random random = new Random();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
Component rendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int r = random.nextInt(255);
int g = random.nextInt(255);
int b = random.nextInt(255);
if (row == 0 && column == 4 || row == 4 && column == 2 )
rendererComponent.setBackground(new Color(r, g, b));
else
setBackground(Color.WHITE);
return rendererComponent;
}
});
table.setHorizontalScrollEnabled(true);
//workaround to avoid border fallback to default scrollpane-border after a LAF switch - JTable bug.
JScrollPane scrollPane = new JScrollPane(table){
@Override
public void updateUI()
{
super.updateUI();
setBorder(UIManager.getBorder("Table.scrollPaneBorder"));
}
};
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
table.packAll();
add(scrollPane,BorderLayout.CENTER);
}