//Example1b.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
public class Example1b {
private static final String window_title = "Edit table display";
private static final int locate_X = 50;
private static final int locate_Y = 50;
private static final int window_width = 320;
private static final int window_height = 160;
private static final int table_width = 300;
private static final int table_height = 120;
private static final int table_row_height = 20;
// data
Object[] colNames = { "name", "amount", "size", "color", "note" };
Object[][] rowData = { { "A01", "20", "large", "white", "soft" },
{ "K01", "5", "thin", "red", "strong" },
{ "U01", "100", "middle", "yellow", "cheap" },
{ "S01", "2.5", "middle", "black", "quality" }, };
// main
public static void main(final String args[]) {
final Example1b sample = new Example1b();
}
// constructor
public Example1b() {
final JFrame f = new JFrame(Example1b.window_title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTable t = new JTable(this.rowData, this.colNames);
t.setRowHeight(Example1b.table_row_height);
t.setGridColor(Color.gray);
for (int i = 0; i < t.getColumnCount(); ++i) {
final TableColumn tc = t.getColumn(t.getColumnName(i));
tc.setCellRenderer(new MyRenderer());
}
final JScrollPane sp = new JScrollPane();
sp.getViewport().setView(t);
sp.setPreferredSize(new Dimension(Example1b.table_width,
Example1b.table_height));
final JPanel p = new JPanel();
p.add(sp);
f.getContentPane().add(p, BorderLayout.CENTER);
f.setBounds(Example1b.locate_X, Example1b.locate_Y,
Example1b.window_width, Example1b.window_height);
f.setVisible(true);
}
// CellRenderer
class MyRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
@Override
public Component getTableCellRendererComponent(final JTable table,
final Object value, final boolean isSelected,
final boolean hasFocus, final int row, final int column) {
switch (column) {
case 1:
this.setHorizontalAlignment(SwingConstants.RIGHT);
break;
case 2:
this.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 3:
this.setHorizontalAlignment(SwingConstants.CENTER);
switch (row) {
case 0:
this.setBackground(Color.black);
this.setForeground(Color.white);
break;
default:
this.setBackground(Color.yellow);
this.setForeground(Color.red);
break;
}
default:
break;
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
}
}