- How to render a checkbox?
- public class CheckBoxTableModel implements AdvancedTableFormat {
- public Class getColumnClass(int column) {
- if(column==4)
- return Boolean.class;
- else
- return Object.class;
- }
- }
- private class TicketTableFormat implements AdvancedTableFormat<Ticket> {
- private final String[] cols = new String[]{"Id", "From", "Subject", "Date", "Incomplete"};
- public int getColumnCount() {
- return cols.length;
- }
- public String getColumnName(int colId) {
- return cols[colId];
- }
- public Class getColumnClass(int col) {
- if (col == 4) {
- return Boolean.class;
- } else {
- return Object.class;
- }
- }
- public Object getColumnValue(Ticket ticket, int colId) {
- switch (colId) {
- case 0:
- return ticket.getId();
- case 1:
- return ticket.getFrom();
- case 2:
- return ticket.getSubject();
- case 3:
- return ticket.getDate();
- case 4:
- return ticket.getIncomplete();
- }
- return null;
- }
- public boolean isEditable(Ticket e, int col) {
- if (col < 4) {
- return false;
- } else {
- return true;
- }
- }
- public Ticket setColumnValue(Ticket e, Object o, int i) {
- e.setB((Boolean) editedValue);
- return e;
- }
- public Comparator getColumnComparator(int i) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
- }
- TicketTableFormat tbFormat = new TicketTableFormat();
- TicketsModel = new EventTableModel(textFilteredTickets, tbFormat);
- ticketTable.setModel(TicketsModel);
- public int getColumnCount()
- public String getColumnName(int column)
- public Object getColumnValue(E model, int column)
- public boolean isEditable(E model, int column) // For making the checkbox editable
- public IFdsModel setColumnValue(E model, Object value, int column)
- public Class getColumnClass(int column) // For making it a Checkbox
- public Comparator<E> getColumnComparator(int arg0) // for sorting (if you have a SortedList)
- import java.util.Comparator;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.SwingUtilities;
- import ca.odell.glazedlists.BasicEventList;
- import ca.odell.glazedlists.EventList;
- import ca.odell.glazedlists.gui.AdvancedTableFormat;
- import ca.odell.glazedlists.gui.WritableTableFormat;
- import ca.odell.glazedlists.swing.EventTableModel;
- public class Tester {
- private static class MyBoolean {
- private Boolean b = Boolean.FALSE;
- public Boolean getB() {
- return b;
- }
- public void setB(Boolean b) {
- this.b = b;
- }
- }
- private static class BooleanTableFormat implements AdvancedTableFormat<MyBoolean>, WritableTableFormat<MyBoolean> {
- @Override
- public int getColumnCount() {
- return 1;
- }
- @Override
- public String getColumnName(int column) {
- return "Bool";
- }
- @Override
- public Object getColumnValue(MyBoolean baseObject, int column) {
- return baseObject.getB();
- }
- @Override
- public Class getColumnClass(int column) {
- return Boolean.class;
- }
- @Override
- public Comparator getColumnComparator(int column) {
- throw new IllegalStateException("Not yet implemented.");
- }
- @Override
- public boolean isEditable(MyBoolean baseObject, int column) {
- return true;
- }
- @Override
- public MyBoolean setColumnValue(MyBoolean baseObject, Object editedValue, int column) {
- baseObject.setB((Boolean) editedValue);
- return baseObject;
- }
- }
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- EventList<MyBoolean> list = new BasicEventList<MyBoolean>();
- list.add(new MyBoolean());
- list.add(new MyBoolean());
- EventTableModel<MyBoolean> etm = new EventTableModel<MyBoolean>(list, new BooleanTableFormat());
- JTable table = new JTable(etm);
- JFrame f = new JFrame("Tester");
- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- f.setSize(300, 200);
- f.getContentPane().add(new JScrollPane(table));
- f.setVisible(true);
- }
- });
- }
- }
- @Override
- public boolean isCellEditable(int row, int colNum) {
- switch (colNum) {
- case 0:
- return false;
- default:
- return false;
- }
- }