我只想在JavaSwing平台的文本字段中使用字母表、退格、删除和空格

我只想在JavaSwing平台的文本字段中使用字母表、退格、删除和空格,java,Java,这是我的节目: private void nametextKeyTyped(java.awt.event.KeyEvent evt) { char c = evt.getKeyChar(); if(!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE) || (c==KeyEvent.VK_DELETE)

这是我的节目:

private void nametextKeyTyped(java.awt.event.KeyEvent evt)    
{                                    
        char c = evt.getKeyChar();    
        if(!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE) ||     (c==KeyEvent.VK_DELETE) ||    
                (c==KeyEvent.VK_SPACE)){  
       getToolkit().beep();  
       evt.consume();  
       }  

但当我按下“空格”键时,程序不起作用。它返回if语句,而backspace和delete则可以完美地执行。所以请帮我解释一下。感谢阅读……

您的代码出现问题的原因在于
):

而不是:

if (!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE) || (c==KeyEvent.VK_DELETE) || (c==KeyEvent.VK_SPACE)){  
    getToolkit().beep();  
    evt.consume();  
 } 
将其更改为:(仔细查看括号)


!(Character.isAlphabetic(c))
将返回TRUE表示空格。请注意前面的

代码的问题在
)上:

而不是:

if (!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE) || (c==KeyEvent.VK_DELETE) || (c==KeyEvent.VK_SPACE)){  
    getToolkit().beep();  
    evt.consume();  
 } 
将其更改为:(仔细查看括号)


!(Character.isAlphabetic(c))
将返回TRUE表示空格。请注意前面的

您的逻辑有问题:

if(!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE)
    || (c==KeyEvent.VK_DELETE) || (c==KeyEvent.VK_SPACE)) {
如果字符不是字母字符,或者是退格、删除或空格,则会发出嘟嘟声

建议的解决方案,前提是如果不在上述范围内,您希望发出嘟嘟声:

private void nameTextKeyTyped(final KeyEvent event)
{
    boolean doBeep = true;
    final char c = event.getKeyChar();
    switch (c) {
        case KeyEvent.VK_BACK_SPACE: 
        case KeyEvent.VK_DELETE:
        case KeyEvent.VK_SPACE:
            doBeep = false;
            break;
        default:
            doBeep = !Character.isAlphabetic(c);
            // no need to "break;": last branch of switch
    }
    if (doBeep)
        getToolkit.beep();
    event.consume();
}

您的逻辑有问题:

if(!(Character.isAlphabetic(c)) || (c==KeyEvent.VK_BACK_SPACE)
    || (c==KeyEvent.VK_DELETE) || (c==KeyEvent.VK_SPACE)) {
如果字符不是字母字符,或者是退格、删除或空格,则会发出嘟嘟声

建议的解决方案,前提是如果不在上述范围内,您希望发出嘟嘟声:

private void nameTextKeyTyped(final KeyEvent event)
{
    boolean doBeep = true;
    final char c = event.getKeyChar();
    switch (c) {
        case KeyEvent.VK_BACK_SPACE: 
        case KeyEvent.VK_DELETE:
        case KeyEvent.VK_SPACE:
            doBeep = false;
            break;
        default:
            doBeep = !Character.isAlphabetic(c);
            // no need to "break;": last branch of switch
    }
    if (doBeep)
        getToolkit.beep();
    event.consume();
}

您似乎颠倒了
isAlphabetic()
test here wait,如果输入的字符在alpha等字符中还是不在alpha等字符中,是否要发出蜂鸣音?您似乎颠倒了
isAlphabetic()
test hereWait,如果输入的字符在alpha等中还是不在alpha等中,您想发出嘟嘟声吗?谢谢,但前面的答案已经解决了我的问题,谢谢您的另一种方法。我真的很荣幸…谢谢,但前面的答案已经解决了我的问题,谢谢你的另一种方式。我真的很荣幸。。。