请问一下怎么样在JTable中加入JComBox或JCheckbox
有没有例子

解决方案 »

  1.   

    Java本身就自带的JComboBox和JCheckBox的Editor啊你直接设置CellEditor就可以了,DefaultCellEditor支持 JComboBox、JCheckBox的构造new DefaultCellEditor(new JComboBox());new DefaultCellEditor(new JCheckBox());
      

  2.   


    JComboBox comb;
    String[] items = {"请选择","网吧","家里","单位"};
    comb = new JComboBox(items);
    //comb 绑定到第三列
    TableColumnModel tcm = this.getTableHeader().getColumnModel();
    TableColumn tc01 = tcm.getColumn(2);
    tc01.setCellEditor(new DefaultCellEditor(comb));
    this  可以换成你的table名字
      

  3.   

    买本《java核心技术》吧,上面有详细的例子。有电子版的。
      

  4.   

    和三楼的基本一个意思String[] cm = {"1111","22222","33333"};
    TableColumn tc = table.getColumn(3);
    tc.setCellEditor(new DefaultCellEditor(new JComboBox(tc))); 
      

  5.   

    我写的简单例子,请参考一下吧。
    类一:import java.awt.Component;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;public class MyTable extends JFrame implements ActionListener {    public MyTable() {
            super("Table");
            Toolkit t = this.getToolkit();
            int height = t.getScreenSize().height;
            int width = t.getScreenSize().width;
            this.setSize(width / 3, height / 3);
            this.setLocation(width / 2, height / 2);
            this.create();
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.setVisible(true);
        }    private Component create() {
            JScrollPane sp = new JScrollPane(this.getTab());
            return this.getContentPane().add(sp);
        }    private JTable getTab() {
            String[] columnName = {"No.", "Name", "Sex", "Address", "Tel.", "Other" };
            String[][] data =
                    {
                        {"1", "mical", "man", "where", "2368", "nothing" },
                        {"2", "mical2", "man", "where", "2368", "nothing" },
                        {"3", "mical3", "man", "where", "2368", "nothing" },
                        {"4", "mical4", "man", "where", "2368", "nothing" },
                        {"5", "mical5", "man", "where", "2368", "nothing" },
                        {"6", "mical6", "man", "where", "2368", "nothing" } };
            JTable j = new JTable(data, columnName);
            ComboBoxColumn cbc = new ComboBoxColumn(j,5);
            return j;
        }    public static void main(String[] args) {
            MyTable t = new MyTable();
    //        JFrame.setDefaultLookAndFeelDecorated(true);
    //        try {
    //          UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel");
    //        } catch (Exception e) {
    //          System.out.println("Substance Raven Graphite failed to initialize");
    //        }
    //        SwingUtilities.invokeLater(new Runnable() {
    //          public void run() {
    //              MyTable w = new MyTable();
    //            w.setVisible(true);
    //          }
    //        });
        }    @Override
        public void actionPerformed(ActionEvent e) {    }
    }类二:package test;import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.AbstractCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.JTable;
    import javax.swing.UIManager;
    import javax.swing.event.CellEditorListener;
    import javax.swing.table.TableCellEditor;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumnModel;public class ComboBoxColumn extends AbstractCellEditor implements
        TableCellRenderer,
        TableCellEditor,
        ActionListener {    private JComboBox renderCbb = null;    private JComboBox editorCbb = null;    public ComboBoxColumn(JTable j, int column) {        super();
            editorCbb = new JComboBox();
            renderCbb = new JComboBox();       
            this.setCbb();
            TableColumnModel tcm = j.getColumnModel();
            tcm.getColumn(column).setCellEditor(this);
            tcm.getColumn(column).setCellRenderer(this);
        }    public void setCbb() {
            editorCbb.addItem("aaa");
            editorCbb.addItem("bbb");
            editorCbb.setSelectedIndex(-1);      
        }    @Override
        public Component getTableCellRendererComponent(JTable table,
                                                       Object value,
                                                       boolean isSelected,
                                                       boolean hasFocus,
                                                       int row,
                                                       int column) {        
            
            if (hasFocus) {
                renderCbb.setForeground(table.getForeground());
                renderCbb.setBackground(UIManager.getColor("Button.background"));
            } else if (isSelected) {
                renderCbb.setForeground(table.getSelectionForeground());
                renderCbb.setBackground(table.getSelectionBackground());
            } else {
                renderCbb.setForeground(table.getForeground());
                renderCbb.setBackground(UIManager.getColor("Button.background"));
            }        return renderCbb;
        }    @Override
        public Component getTableCellEditorComponent(JTable table,
                                                     Object value,
                                                     boolean isSelected,
                                                     int row,
                                                     int column) {        
             
            return editorCbb;
        }    @Override
        public void addCellEditorListener(CellEditorListener l) {
            super.addCellEditorListener(l);
        }    @Override
        public boolean stopCellEditing() {
            return true;
        }    @Override
        public Object getCellEditorValue() {
            return editorCbb.getSelectedItem();
        }    @Override
        public void actionPerformed(ActionEvent e) {    }    @Override
        public void cancelCellEditing() {
            super.cancelCellEditing();
        }
    }
      

  6.   

    最近也在做这个
    对JTABLE不太熟悉。