我想让TextField中的内容只能输入数字或英文字母,并设置它的最大长度不可超过某个值,该怎么设啊?
   还一个问题,如何能做到将JTable表格中的内容能按我的要求排序,并由我来设置显示哪行不显示哪行.

解决方案 »

  1.   

    我Blog中写过一个这样的例子,希望对你有帮助:
    http://blog.csdn.net/mq612/archive/2006/09/29/1305413.aspx
      

  2.   

    通过Document实现:
    myTextField.setDocument ( new PlainDocument ()
            {
                public void insertString( int offset , String s ,
                                          AttributeSet attributeSet ) throws
                    BadLocationException
                {
                    if ( s == null || offset < 0 )
                    {
                        return;
                    }                                for ( int i = 0; i < s.length; i++ )
                    {
                        if ( getLength () > MAX_LENGTH - 1 or 
          !Character.isLetterOrDigit(s.charAt(i))
                        {                        
                                JOptionPane.showMessageDialog ( null ,
                                    "Invalid char!" ,
                                    "Error",
                                    JOptionPane.YES_OPTION );
                                break;                           
                        }       
               super.insertString ( offset + i , s.substring ( i , i + 1 ) ,
                                             attributeSet );
                    }
                    return;
                }
            } );
      

  3.   

    哥哥,我是初学者,你这个我不太会用,看我把它加到这里怎么弄能没错误?import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;public class Text extends JFrame {JPanel panel=new JPanel();
    JLabel label=new JLabel("用户名");
    JTextField textfield=new JTextField();
    protected static final int MAX_LENGTH = 8;
    /**
     * Launch the application
     * @param args
     */
    public static void main(String args[]) {
    try {
    Text frame = new Text();
    frame.setVisible(true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public Text() {
    super();
    setBounds(100, 100, 500, 375);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    getContentPane().add(panel);
    panel.setLayout(new GridBagLayout());
    final GridBagConstraints gridBagConstraints = new GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.insets = new Insets(10, 100, 100, 0);
    panel.add(label, gridBagConstraints);
    final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
    gridBagConstraints_1.ipadx = 120;
    gridBagConstraints_1.gridx = 1;
    gridBagConstraints_1.gridy = 0;
    gridBagConstraints_1.insets = new Insets(5, 20, 100, 218);
    panel.add(textfield, gridBagConstraints_1);

    textfield.setDocument ( new PlainDocument ()
            {
                public void insertString( int offset , String s ,
                                          AttributeSet attributeSet ) throws
                    BadLocationException
                {
                    if ( s == null || offset < 0 )
                    {
                        return;
                    }                                 for ( int i = 0; i < s.length; i++ )
                    {
                        if ( getLength () > MAX_LENGTH - 1 or 
          !Character.isLetterOrDigit(s.charAt(i))
                        {                        
                                JOptionPane.showMessageDialog ( null ,
                                    "Invalid char!" ,
                                    "Error",
                                    JOptionPane.YES_OPTION );
                                break;                           
                        }       
              super.insertString ( offset + i , s.substring ( i , i + 1 ) ,
                                             attributeSet );
                    }
                    return;
                }
            } );
    }
    }
      

  4.   

    1. 导入 import javax.swing.text.AttributeSet;
    2. 循环和条件语句不对:
    for ( int i = 0; i < s.length() ; i++ )
    {
       if ( getLength () > MAX_LENGTH - 1 || 
       !Character.isLetterOrDigit(s.charAt(i)))