要怎样设置JTable的单元格只能输入数字,望大家给予帮忙,谢谢!

解决方案 »

  1.   

    public   java.lang.Class   getColumnClass(int   col)   
      {   
          if(col==2)   
              return   java.lang.Number.class;   
          else   
              return   java.lang.Object.class;   
      }   
      

  2.   

    关键是这样的话JTable的单元格都不能被编辑啊,我是想让它能输入数字呀!
      

  3.   

    继承DefaultCellEditor构造一个自己的Editor类
    比如MyCellEditor(JTable table)
    重写setValue,getTableCellEditorComponent和getCellEditorValue等方法
    在这些方法里可以用来判断是否数字,不是数字不能录入等.
    也可以根据需求重写mouseClicked等事件
    JTable table = new JTable();
    DefaultCellEditor editor = new MyCellEditor(table);
    table.setCellEditor(editor);
      

  4.   

    JTextField有个方法setDocument,自己写一个document,将document的insertString方法改写,如入得不是数字什么都不做,直接return
      

  5.   

    在网上找的一段代码.一起学习了......
    import java.awt.Dimension;
    import java.awt.BorderLayout;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.JTable;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class Frame1 extends JFrame {
        JPanel contentPane;
        Object[][] object = { {"aaa", new Integer(1)}, {"bbb", new Integer(1)},
                            {"ccc", new Integer(1)}, {"ddd", new Integer(1)}
        };
        String[] name = {"a", "b"};
        JTable table=new JTable(new DefaultTableModel(object,name){
            public void setValueAt(Object aValue, int rowIndex, int columnIndex) 
     
            {
                if (columnIndex == 1) {
                    Integer num = null;
                    try {
                        num = Integer.parseInt((String) aValue);
                    } catch (Exception ex) {
                        javax.swing.JOptionPane.showMessageDialog(null, "只能输入数字!");
                        return;                }
                }
                
                super.setValueAt(aValue,rowIndex,columnIndex);
                this.fireTableDataChanged();
                
            }
        });    public Frame1() {
         this.setSize(new Dimension(500,300));
         this.setVisible(true);
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
    public static void main(String args[]){
    new Frame1().setVisible(true);
    }
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(new BorderLayout());
            setSize(new Dimension(600, 550));
            this.add(table,BorderLayout.CENTER);    }}
      

  6.   

    还有个简单的:
    package Gsgl;import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;public class TableNum extends JFrame {    public TableNum() {
            super();
            this.init();
            this.setSize(new Dimension(400,200));
        }    private void init() {
            this.getContentPane().add(new JTable(new DefaultTableModel() {
                @SuppressWarnings("unchecked")
                public Class getColumnClass(int c) {
                    return Integer.class;
                }            public int getColumnCount() {
                    return 10;
                }            public int getRowCount() {
                    return 10;
                }
            }));
        }    public static void main(String[] args) {
            TableNum l = new TableNum();
            l.setVisible(true);
            l.setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    }
      

  7.   

    这个好象可以呀,只要把你想要输入数字的列设置一下就可以了:columnIndex == 你的列。