我想在键盘上按一个字母时弹出一个对话框。通过这种方式,我有了一个很长的char数组。有没有更好的方法来编写此代码?
@Override
public void keyPressed(KeyEvent e) {
char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char c = e.getKeyChar();
char a = alphabet[0];
for(int i = 0; i < alphabet.length;i++) {
a = alphabet[i];
if(c == a)
JOptionPane.showMessageDialog(panel, "Error: "+c, " cannot be used", JOptionPane.WARNING_MESSAGE);
}
}
答案 0 :(得分:1)
如果您对更好的定义是更少的行,则任何单个小写字符的正则表达式将更少的代码。
private String _regex = "[a-z]";
private Pattern _lowercaseCharacterPattern = Pattern.compile(_regex);
@Override
public void keyPressed(KeyEvent e) {
char c = e.getKeyChar();
if( _lowercaseCharacterPattern.matcher(String.valueOf(c) ).matches() )
JOptionPane.showMessageDialog(panel, "Error: "+c, " cannot be used", JOptionPane.WARNING_MESSAGE);
}
答案 1 :(得分:0)
简单起见,您可以在.contains()
个“有效”字符上使用String
。
类似的东西:
private final String letters = "abcdefghijklmnopqrstuvwxyz";
@Override
public void keyPressed(KeyEvent e) {
char c = e.getKeyChar();
// if the character entered is not the list of valid inputs, warn user
if( !letters.contains(Character.toString(c)) ){
JOptionPane.showMessageDialog(panel, "Error: "+c, " cannot be used", JOptionPane.WARNING_MESSAGE);
}
}