Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Cell Renderer for the Gender Column

import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.util.Calendar; import java.util.GregorianCalendar; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; class GenderRenderer extends JComboBox implements TableCellRenderer {   public GenderRenderer() {     super();     addItem("Male");     addItem("Female");   }   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,       boolean hasFocus, int row, int column) {     if (isSelected) {       setForeground(table.getSelectionForeground());       super.setBackground(table.getSelectionBackground());     } else {       setForeground(table.getForeground());       setBackground(table.getBackground());     }     boolean isMale = ((Boolean) value).booleanValue();     setSelectedIndex(isMale ? 0 : 1);     return this;   } } public class TableCellRendererJComboBox extends JFrame {   protected JTable table;   public static void main(String[] args) {     TableCellRendererJComboBox stt = new TableCellRendererJComboBox();     stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     stt.setSize(400, 200);     stt.setVisible(true);   }   public TableCellRendererJComboBox() {     Container pane = getContentPane();     pane.setLayout(new BorderLayout());     TableValues tv = new TableValues();     table = new JTable(tv);     TableColumnModel tcm = table.getColumnModel();     TableColumn tc = tcm.getColumn(TableValues.GENDER);     tc.setCellRenderer(new GenderRenderer());     JScrollPane jsp = new JScrollPane(table);     pane.add(jsp, BorderLayout.CENTER);   } } class TableValues extends AbstractTableModel {   public final static int FIRST_NAME = 0;   public final static int LAST_NAME = 1;   public final static int DATE_OF_BIRTH = 2;   public final static int ACCOUNT_BALANCE = 3;   public final static int GENDER = 4;   public final static boolean GENDER_MALE = true;   public final static boolean GENDER_FEMALE = false;   public Object[][] values = {       { "C", "A", new GregorianCalendar(1962, Calendar.FEBRUARY, 20).getTime(),           new Float(1.67), new Boolean(GENDER_MALE) },       { "J", "A", new GregorianCalendar(1987, Calendar.JANUARY, 6).getTime(),           new Float(2.78), new Boolean(GENDER_MALE) },       { "J", "A", new GregorianCalendar(1989, Calendar.AUGUST, 31).getTime(),           new Float(3.89), new Boolean(GENDER_FEMALE) },       { "E", "K", new GregorianCalendar(1945, Calendar.JANUARY, 16).getTime(),           new Float(-4.70), new Boolean(GENDER_FEMALE) },       { "B", "S", new GregorianCalendar(1907, Calendar.AUGUST, 2).getTime(),           new Float(5.00), new Boolean(GENDER_FEMALE) } };   public int getRowCount() {     return values.length;   }   public int getColumnCount() {     return values[0].length;   }   public Object getValueAt(int row, int column) {     return values[row][column];   } }