使用 java swing 在 JTextField 中进行字母验证

发布于 2024-12-22 04:18:45 字数 2801 浏览 4 评论 0原文

当我在第一个 JTextField 中输入值时,需要对其进行验证,以便它只接受字母字符而不接受其他字符。当我输入字母以外的字符时,不应将其放入 JTextField 中,并且在按下时应以标签格式给出一条消息“应仅输入字母字符”其他键。

这是我使用的代码:

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
}
}

When I enter a value in the first JTextField it needs to be validated so that it should accept only alphabetical characters and not others. When I enter a character other than an alphabetical one, it should not be put into the JTextField, and it should give a message in the label format as "should enter alphabetical characters only" at the time of pressing other keys.

This is the code I used:

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
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

七禾 2024-12-29 04:18:45

您可以使用 JFormattedTextField 或常用的 JTextField,但分配您自己的 DocumentFilter。

You can use JFormattedTextField or usual JTextField but assign your own DocumentFilter.

深海少女心 2024-12-29 04:18:45

如果要删除非字母字符,可以使用 replaceAll 将它们替换为空。例如:

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

If you want to remove characters which are not alphabets you can use replaceAll to replace them with nothing. For example:

TmpCurntStr=PTxtCtrl.getText();
TmpConvStr=TmpConvStr.replaceAll("[^a-zA-Z]", "");
PTxtCtrl.setText(TmpConvStr);
能否归途做我良人 2024-12-29 04:18:45

我已经更正了这个检查,如果您不明白,请告诉我。

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
}
}

i have correct this check it if you don't understand then let me know.

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
}
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文