Source Code : Multiple Component Table: Checkbox and Combobox

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

Multiple Component Table: Checkbox and Combobox

Multiple Component Table: Checkbox and Combobox
 
// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html

/* (swing1.1beta3) */


import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.EventObject;

import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.event.CellEditorListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;

/**
 * @version 1.0 11/09/98
 */

class ComboString {
  String str;

  ComboString(String str) {
    this.str = str;
  }

  public String toString() {
    return str;
  }
}

class MultiRenderer extends DefaultTableCellRenderer {
  JCheckBox checkBox = new JCheckBox();

  public Component getTableCellRendererComponent(JTable table, Object value,
      boolean isSelected, boolean hasFocus, int row, int column) {
    if (value instanceof Boolean) { // Boolean
      checkBox.setSelected(((Boolean) value).booleanValue());
      checkBox.setHorizontalAlignment(JLabel.CENTER);
      return checkBox;
    }
    String str = (value == null) ? "" : value.toString();
    return super.getTableCellRendererComponent(table, str, isSelected,
        hasFocus, row, column);
  }
}

class MultiEditor implements TableCellEditor {
  private final static int COMBO = 0;

  private final static int BOOLEAN = 1;

  private final static int STRING = 2;

  private final static int NUM_EDITOR = 3;

  DefaultCellEditor[] cellEditors;

  JComboBox comboBox;

  int flg;

  public MultiEditor() {
    cellEditors = new DefaultCellEditor[NUM_EDITOR];
    comboBox = new JComboBox();
    comboBox.addItem("true");
    comboBox.addItem("false");
    cellEditors[COMBO] = new DefaultCellEditor(comboBox);
    JCheckBox checkBox = new JCheckBox();
    //checkBox.setOpaque( true );
    checkBox.setHorizontalAlignment(JLabel.CENTER);
    cellEditors[BOOLEAN] = new DefaultCellEditor(checkBox);
    JTextField textField = new JTextField();
    cellEditors[STRING] = new DefaultCellEditor(textField);
    flg = NUM_EDITOR; // nobody
  }

  public Component getTableCellEditorComponent(JTable table, Object value,
      boolean isSelected, int row, int column) {
    if (value instanceof ComboString) { // ComboString
      flg = COMBO;
      String str = (value == null) ? "" : value.toString();
      return cellEditors[COMBO].getTableCellEditorComponent(table, str,
          isSelected, row, column);
    } else if (value instanceof Boolean) { // Boolean
      flg = BOOLEAN;
      return cellEditors[BOOLEAN].getTableCellEditorComponent(table,
          value, isSelected, row, column);
    } else if (value instanceof String) { // String
      flg = STRING;
      return cellEditors[STRING].getTableCellEditorComponent(table,
          value, isSelected, row, column);
    }
    return null;
  }

  public Object getCellEditorValue() {
    switch (flg) {
    case COMBO:
      String str = (String) comboBox.getSelectedItem();
      return new ComboString(str);
    case BOOLEAN:
    case STRING:
      return cellEditors[flg].getCellEditorValue();
    default:
      return null;
    }
  }

  public Component getComponent() {
    return cellEditors[flg].getComponent();
  }

  public boolean stopCellEditing() {
    return cellEditors[flg].stopCellEditing();
  }

  public void cancelCellEditing() {
    cellEditors[flg].cancelCellEditing();
  }

  public boolean isCellEditable(EventObject anEvent) {
    return cellEditors[flg].isCellEditable(anEvent);
  }

  public boolean shouldSelectCell(EventObject anEvent) {
    return cellEditors[flg].shouldSelectCell(anEvent);
  }

  public void addCellEditorListener(CellEditorListener l) {
    cellEditors[flg].addCellEditorListener(l);
  }

  public void removeCellEditorListener(CellEditorListener l) {
    cellEditors[flg].removeCellEditorListener(l);
  }

  public void setClickCountToStart(int n) {
    cellEditors[flg].setClickCountToStart(n);
  }

  public int getClickCountToStart() {
    return cellEditors[flg].getClickCountToStart();
  }
}

public class MultiComponentTable extends JFrame {

  public MultiComponentTable() {
    super("MultiComponent Table");

    DefaultTableModel dm = new DefaultTableModel() {
      public boolean isCellEditable(int row, int column) {
        if (column == 0) {
          return true;
        }
        return false;
      }
    };
    dm.setDataVector(
        new Object[][] {
            { new ComboString("true"), "ComboString", "JLabel",
                "JComboBox" },
            { new ComboString("false"), "ComboString", "JLabel",
                "JComboBox" },
            { new Boolean(true), "Boolean", "JCheckBox",
                "JCheckBox" },
            { new Boolean(false), "Boolean", "JCheckBox",
                "JCheckBox" },
            { "true", "String", "JLabel", "JTextField" },
            { "false", "String", "JLabel", "JTextField" } },
        new Object[] { "Component", "Data", "Renderer", "Editor" });

    JTable table = new JTable(dm);
    table.getColumn("Component").setCellRenderer(new MultiRenderer());
    table.getColumn("Component").setCellEditor(new MultiEditor());

    JScrollPane scroll = new JScrollPane(table);
    getContentPane().add(scroll);
    setSize(400, 160);
    setVisible(true);
  }

  public static void main(String[] args) {
    MultiComponentTable frame = new MultiComponentTable();
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }
}


           
         
  

Thank with us