boolean check(char ch) {
return Character.isLetterOrDigit(ch) ||
Character.isSpaceChar(ch) ||
ch == ',';
}
如果您正在使用KeyEvent
,请确保将传入的字符转换为整数以检查其值
System.out.println(KeyEvent.VK_COMMA); // 44
System.out.println((int)','); // 44
System.out.println(KeyEvent.VK_SPACE); // 32
System.out.println((int)' '); // 32
我编写了一个非常简单的 Java Swing 应用程序来验证每个按键。当用户键入数字或按下逗号键时,我必须检查是否按住了 shift。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Foo extends JFrame {
private static final long serialVersionUID = 1L;
private JTextArea ara;
private JScrollPane scr;
private JLabel lbl;
public Foo() {
initComponents();
addChildren();
addListeners();
this.setFont(null);
this.setTitle("Character Validator");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setPreferredSize(new Dimension(300, 200));
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private void initComponents() {
ara = new JTextArea(4, 60);
scr = new JScrollPane(ara);
lbl = new JLabel("Waiting for input...");
}
protected void addChildren() {
this.setLayout(new BorderLayout());
this.add(scr, BorderLayout.CENTER);
this.add(lbl, BorderLayout.SOUTH);
}
protected void addListeners() {
ara.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) { }
@Override
public void keyReleased(KeyEvent e) { }
@Override
public void keyPressed(KeyEvent e) {
if (isValidKey(e.getKeyChar(), e.isShiftDown()))
setMessage("Valid!", 0x007F00);
else
setMessage("Invalid!", 0x7F0000);
}
});
}
private void setMessage(String message, int color) {
lbl.setText(message);
lbl.setForeground(new Color(color));
}
protected boolean isValidKey(char keyChar, boolean isShiftDown) {
boolean validDigit = Character.isDigit(keyChar) && !isShiftDown;
boolean validLetter = Character.isLetter(keyChar);
boolean validSpace = keyChar == KeyEvent.VK_SPACE;
boolean validComma = keyChar == KeyEvent.VK_COMMA && !isShiftDown;
return validDigit || validLetter || validSpace || validComma;
}
public static void main(String[] args) {
new Foo();
}
}