如题

解决方案 »

  1.   

    重写tablemodel的setValueAt方法可以做到的
      

  2.   

    package cn.com.s1t62.wufangdong;import java.awt.*;import javax.swing.*;
    import java.awt.Rectangle;
    import javax.swing.table.DefaultTableModel;
    public class Frame1 extends JFrame {
        JPanel contentPane;
        Object[][] object = { {"123", "asfd", "asdfa", "dfawe"}, {"123",
                            "asfd", ";lkoi", "faawe"}, {"123", "asfd",
                            "asdfa", "faswe"}, {"123", "6we56", "asda",
                            "qadf1"}
        };
        
        String[] name={"A","B","C","D"};
        JTable jTable1 = new JTable(new DefaultTableModel(object,name){
            public void setValueAt(Object aValue, int rowIndex, int columnIndex) 
            {
                String str=aValue.toString();
                if (str.length()>6)
                {
                    javax.swing.JOptionPane.showMessageDialog(null,"不能输入大于6位的字符串!");
                    return;
                }
                
                super.setValueAt(aValue,rowIndex,columnIndex);
            }
        });
        public Frame1() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(null);
            setSize(new Dimension(400, 300));
            setTitle("Frame Title");
            jTable1.setBounds(new Rectangle(36, 37, 291, 214));
            contentPane.add(jTable1);
        }
    }