Hi I have Jtable with some columns the first two are sortable,vegetarian column is combobox and now I Want to change the header column to enum . So I want to change the code such that enum should be my header column... please give me reply I am trying this program since last night
class MyTable extends JFrame {
/*public enum ColumNames {
FIRSTNAME, LASTNAME, DEPARTMENT, SALARY,
YEARS, VEGETARIAN, GENDER,AGE;
}*/
private JPanel topPanel;
private JTable table;
private JScrollPane scrollPane;
private String[] columnNames;
private Object[][] dataValues;
JTextField textBox = new JTextField();
public MyTable() {
setTitle("MyTable");
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
getContentPane().add(topPanel);
columnNames = new String[] { "FirstName", "LastName", "Department", "Salary", "Years", "Vegetarian", "Gender",
"Age" };
dataValues = new Object[][] {
{ "Kathy", "Smith", "Networking", new Integer(50000), new Integer(5), new Boolean(false), "Male",
new Integer(35) },
{ "John", "Doe", "Testing", new Integer(65000), new Integer(3), new Boolean(true), "Male",
new Integer(45) },
{ "Sue", "Black", "Testing", new Integer(60000), new Integer(2), new Boolean(false), "Male",
new Integer(40) },
{ "Jane", "White", "Developer", new Integer(70000), new Integer(20), new Boolean(true), "Male",
new Integer(35) },
{ "Joe", "Brown", "Networking", new Integer(60000), new Integer(10), new Boolean(false), "Male",
new Integer(30) } };
myTableModel model = new myTableModel();
table = new JTable();
table.setRowHeight(50);
table.setModel(model);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel()){
@Override
public boolean isSortable(int ColumnNames) {
if(ColumnNames < (2))
return true;
else
return false;
}};
table.setRowSorter(sorter);
setUpVegColumn(table,table.getColumnModel().getColumn(5));
setUpSalColumn(table, table.getColumnModel().getColumn(3));
table.setCellSelectionEnabled(true);
scrollPane = new JScrollPane(table);
topPanel.add(scrollPane, BorderLayout.CENTER);
}
private void setUpSalColumn(JTable table, TableColumn column) {
TableColumn salary = table.getColumnModel().getColumn(3);
salary.setCellEditor(new DefaultCellEditor(textBox));
String s =textBox.getText();
Pattern pattern = Pattern.compile("^[0-9]*$");
Matcher m = pattern.matcher(s);
if((!m.matches())){
textBox.setEditable(false);
JOptionPane.showMessageDialog(null, "enter numbers only");
}
else
{
textBox.setEditable(true);
}
}
private void setUpVegColumn(JTable table, TableColumn column ) {
JComboBox comboBox = new JComboBox();
DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement("True");
model.addElement("False");
model.addElement("Both");
model.addElement("None of the above");
comboBox.setModel(model);
column.setCellEditor(new DefaultCellEditor(comboBox));
model = new DefaultComboBoxModel();
model.addElement("True");
model.addElement("False");
model.addElement("Both");
model.addElement("None of the above");
// Set up tool tips for the sport cells.
ComboBoxTableCellRenderer renderer = new ComboBoxTableCellRenderer();
renderer.setModel(model);
column.setCellRenderer(renderer);
}
class ComboBoxTableCellRenderer extends JComboBox implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
setSelectedItem(value);
return this;
}
}
public class myTableModel extends DefaultTableModel {
myTableModel() {
super(dataValues, columnNames);
}
@Override
public boolean isCellEditable(int row, int cols) {
if(cols==3 || cols==5){
return true;
}
else{
return false;
}
}
}
public static void main(String args[]) {
MyTable x = new MyTable();
x.setVisible(true);
}