Im having trouble getting my JTable that im using to display either check boxes or combo boxes in my applet.
Here is the code that is not working correctly
String[] options = {"download", "ignore"};
Object[] obj = {new JComboBox(options), ((MetadataList)array.get(1)).getMetadata("Filename").getValue()};
defaultTableModel2.addRow(obj);
The defaultTableModel2 is simply a DefaultTableModel defaultTabelModel2 = new DefaultTableModel() so nothing too dramatic there. The code above is using a JComboBox, but I have also tried using a JCheckBox as well and the same issues were present.
javax.swing.JComboBox[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.BasicComboBoxUI$Handler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@8380df,flags=320,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=download]
is what appears instead of a JComboBox
Any help would be greatly appreciated!
For example:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
@SuppressWarnings("serial")
public class TableJunk extends JPanel {
enum Day {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}
MyTableModel tableModel = new MyTableModel();
private JTable myTable = new JTable(tableModel);
public TableJunk() {
setLayout(new BorderLayout());
add(new JScrollPane(myTable));
Object[] rowData = {Day.MONDAY, Boolean.TRUE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.TUESDAY, Boolean.TRUE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.WEDNESDAY, Boolean.TRUE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.THURSDAY, Boolean.TRUE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.FRIDAY, Boolean.TRUE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.SATURDAY, Boolean.FALSE};
tableModel.addRow(rowData );
rowData = new Object[]{Day.SUNDAY, Boolean.FALSE};
tableModel.addRow(rowData );
// create the combo box for the column editor
JComboBox<Day> comboBox = new JComboBox<TableJunk.Day>(Day.values());
myTable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(comboBox));
}
private static void createAndShowGui() {
TableJunk mainPanel = new TableJunk();
JFrame frame = new JFrame("TableJunk");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
private static class MyTableModel extends DefaultTableModel {
private static final String[] COLUMN_NAMES = {"Day", "Work Day"};
public MyTableModel() {
super(COLUMN_NAMES, 0);
}
// this method will allow the check box to be rendered in the 2nd column
public java.lang.Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0) {
return Day.class;
} else if (columnIndex == 1) {
return Boolean.class;
} else {
return super.getColumnClass(columnIndex);
}
};
}
}