使用 java swing 在 JTextField 中进行字母验证
当我在第一个 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 JFormattedTextField 或常用的 JTextField,但分配您自己的 DocumentFilter。
You can use JFormattedTextField or usual JTextField but assign your own DocumentFilter.
如果要删除非字母字符,可以使用
replaceAll
将它们替换为空。例如:If you want to remove characters which are not alphabets you can use
replaceAll
to replace them with nothing. For example:我已经更正了这个检查,如果您不明白,请告诉我。
i have correct this check it if you don't understand then let me know.