【发布时间】:2012-01-25 03:11:21
【问题描述】:
当我在第一个 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
}
}
【问题讨论】:
-
再次尝试完全相同的问题? stackoverflow.com/questions/8573365/…
-
无论如何(如果我还没有 :-) 请学习 java 命名约定并遵守它们
-
我投票结束了 3 次相同的问题
-
不要使用 KeyEvents,因为它们是 AWT 特有的,使用 KeyBinding 就像使用 Swing 一样。就在最近,当我使用 KeyEvents 向 Swing 发布答案时,我收到了这个回复,从我的分数中扣除了 -1。最好了解 KeyBinding。其他人也可能会扣除你的分数。问候
-
ahh ...我知道我又一次看到完全相同的代码:stackoverflow.com/questions/8572001/… - 尽管问题略有变化。读你的教科书怎么样?我确信它包含一章解释如何解决该作业......
标签: java swing jtextfield