2011-12-21 27 views
-1

可能重复:
I didn't get a proper output for this code, plz send me a correct code字母验证在JTextField中使用的Java Swing

嗨当​​我进入JTextField1它需要验证的值应该只接受字母和并不比其他当我输入字母以外的值时,它不应该进入JTextField1并以标签格式给出消息,因为只有在按下其他键时才能输入字母。
我用 ===============

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class valid extends JFrame { 
    perform1 per1=new perform1(); 
    String num1="Alpha"; 
    String num2="Numeric"; 
    String num3="Alphanumeric"; 
    Container contentPane = getContentPane(); 
    JPanel jp=new JPanel(new GridLayout(2, 2)); 
    JLabel label1=new JLabel("STUDENT NAME", JLabel.LEFT); 
    JLabel label2=new JLabel("REG NO", JLabel.LEFT); 
    JTextField text1=new JTextField(15); 
    JTextField text2=new JTextField(15); 
    public valid(){ 
     text1.addKeyListener(new KeyAdapter() { 
      public void keyReleased(KeyEvent e) { 
       per1.dis(text1, e, num1); 

      } 
     }); 
     text2.addKeyListener(new KeyAdapter() { 
      public void keyReleased(KeyEvent e) { 
       per1.dis(text2, e, num2); 
      } 
     }); 
     setLayout(new FlowLayout(FlowLayout.CENTER)); 
     jp.add(label1); 
     jp.add(text1); 
     jp.add(label2); 
     jp.add(text2); 
     contentPane.add("Center", jp); 
     setSize(400, 300); 
     setVisible(true); 
    } 
    public static void main(String ar[]) 
    { 
     new valid(); 
    } 
} 
class perform1{ 
public void dis(JTextField PTxtCtrl,KeyEvent PKeyvalue,String PTempStr){ 
    JLabel error=new JLabel(); 
    //JTextField text=new JTextField(); 
    String TmpCurntStr; 
    String TmpConvStr; 
    value val = value.valueOf(PTempStr); 

    switch(val){ 
     case Alpha: 
      if((PKeyvalue.getKeyChar()>='a'&& PKeyvalue.getKeyChar()<='z')|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE)) 
      { 
      TmpCurntStr=PTxtCtrl.getText(); 
      TmpConvStr=TmpCurntStr.toUpperCase(); 
      PTxtCtrl.setText(TmpConvStr); 
      //PTxtCtrl.setEditable(true); 
      //error.setText(""); 
      }else{ 
      //PTxtCtrl.setEditable(false); 
      //error.setText("* Enter only numeric digits(0-9)"); 

      } 
      break; 
     case Numeric: 
      if((PKeyvalue.getKeyChar()>='0'&& PKeyvalue.getKeyChar()<='9')|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE)) 
      { 
      TmpCurntStr=PTxtCtrl.getText(); 
      System.out.println("hai"); 
      }else{ 
       JOptionPane.showMessageDialog(null,"Only numeric"); 
      } 
      break; 
     case Alphanumeric: 
      break; 
    } 
} 
    enum value{ 
    Alpha, 
    Numeric, 
    Alphanumeric 
} 
} 
+0

你的问题是? – rsp 2011-12-21 09:34:41

+0

再次尝试完全相同的问题? http://stackoverflow.com/questions/8573365/i-didnt-get-a-proper-output-for-this-code-plz-send-me-a-correct-code反正 – kleopatra 2011-12-21 09:37:40

+0

(如果我没有已经:-)请学习java命名约定,并坚持他们 – kleopatra 2011-12-21 09:39:00

回答

4

可以使用的JFormattedTextField或平常的JTextField但指定自己的DocumentFilter的代码。

+1

由匿名up-voter,我太迟了,我删除了相同的答案 – mKorbel 2011-12-21 09:39:27

+0

我的问题是,当我输入数字键而不是字母在时间,jtextfield不应该接受输入数字键,那么它会在标签框中给出一个消息,应该是红色前景是“Alpha只接受”,这是特定的Jtextfield旁边。请给我这个解决方案。 – arasicode 2011-12-21 10:43:18

1

如果你想删除不是字母的字符,你可以用replaceAll来替换它们。例如:

TmpCurntStr=PTxtCtrl.getText(); 
TmpConvStr=TmpConvStr.replaceAll("[^a-zA-Z]", ""); 
PTxtCtrl.setText(TmpConvStr); 
1

我有正确的检查它,如果你不明白,那么让我知道。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class valid extends JFrame { 
    perform1 per1=new perform1(); 
    String num1="Alpha"; 
    String num2="Numeric"; 
    String num3="Alphanumeric"; 
    Container contentPane = getContentPane(); 
    JPanel jp=new JPanel(new GridLayout(2, 2)); 
    JLabel label1=new JLabel("STUDENT NAME", JLabel.LEFT); 
    JLabel label2=new JLabel("REG NO", JLabel.LEFT); 
    JTextField text1=new JTextField(15); 
    JTextField text2=new JTextField(15); 
    public valid(){ 
     text1.addKeyListener(new KeyAdapter() { 
      public void keyReleased(KeyEvent e) { 
       /** 
       * check ASCII value of character enter in text1 
       * if it not fall in alphabets then send Alphanumeric 
       * 
       */ 
       char text = e.getKeyChar(); 
       if(text >= 65 && text <= 90 || text >= 97 && text <= 122){ 
        per1.dis(text1, e, num1); 
       }else{ 
        per1.dis(text1, e, num3); 
       } 

      } 
     }); 
     text2.addKeyListener(new KeyAdapter() { 
      public void keyReleased(KeyEvent e) { 
       per1.dis(text2, e, num2); 
      } 
     }); 
     setLayout(new FlowLayout(FlowLayout.CENTER)); 
     jp.add(label1); 
     jp.add(text1); 
     jp.add(label2); 
     jp.add(text2); 
     contentPane.add("Center", jp); 
     setSize(400, 300); 
     setVisible(true); 
    } 
    public static void main(String ar[]) 
    { 
     new valid(); 
    } 
} 
class perform1{ 
public void dis(JTextField PTxtCtrl,KeyEvent PKeyvalue,String PTempStr){ 
    JLabel error=new JLabel(); 
    //JTextField text=new JTextField(); 
    String TmpCurntStr; 
    String TmpConvStr; 
    value val = value.valueOf(PTempStr); 

    switch(val){ 
     case Alpha: 
      if((PKeyvalue.getKeyChar()>='a'&& PKeyvalue.getKeyChar()<='z')|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE)) 
      { 
      TmpCurntStr=PTxtCtrl.getText(); 
      TmpConvStr=TmpCurntStr.toUpperCase(); 
      PTxtCtrl.setText(TmpConvStr); 
      //PTxtCtrl.setEditable(true); 
      //error.setText(""); 
      }else{ 
      //PTxtCtrl.setEditable(false); 
      //error.setText("* Enter only numeric digits(0-9)"); 

      } 
      break; 
     case Numeric: 
      if((PKeyvalue.getKeyChar()>='0'&& PKeyvalue.getKeyChar()<='9')|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_DELETE)|| 
      (PKeyvalue.getKeyCode()==PKeyvalue.VK_BACK_SPACE)) 
      { 
      TmpCurntStr=PTxtCtrl.getText(); 
      System.out.println("hai"); 
      }else{ 
       JOptionPane.showMessageDialog(null,"Only numeric"); 
       PTxtCtrl.setText(""); 
      } 
      break; 
     case Alphanumeric: 
//   System.err.println("check"); 
      /** 
      * if it send Alphanumeric then give a pop up message 
      */ 
      JOptionPane.showMessageDialog(null,"Only Alphabets"); 
      PTxtCtrl.setText(""); 
      break; 
    } 
} 
    enum value{ 
    Alpha, 
    Numeric, 
    Alphanumeric 
} 
}