1

我有两节课

public class Finestra extends javax.swing.JFrame{
    ........
    jtextField.setinputVerifier(.....):
}

public abstract class Verifica extends InputVerifier{
    String message;
    public Verifica(String message){
    }

    public abstract boolean verifica(JtextField c);

    public boolean verify(Jcomponent c){
         JTextField c = (JTextField) jc;
    if (esito(c) == false){
        return false;
    }else{
        return true;
    }
}
    }
}

我想在 Finestra 中使用 Verifca 类。我没有扩展它,因为有 javax.swing.JFrame。我可以使用 Verifica 吗?它是唯一的抽象方法验证的问题。

我试试这个,但不起作用

      testo.setInputVerifier(new Verifica("error") {
         public boolean verifica(testo){
             if (testo.getText == null){
                return true;
             }else{
                  return false;
             }

           }

      });
4

1 回答 1

0

您要做的是拥有一个抽象类Verifica,然后在使用它时创建一个具有该方法的自定义实现的匿名类verifica

在您正在执行的匿名类定义中,您必须使用相同的签名覆盖变量,例如:

testo.setInputVerifier(new Verifica("error") {
     @Override
     public boolean verifica(JTextField c) {
         if (testo.getText == null){
            return true;
         } else{
              return false;
         }
     }

  });

您不能将变量“绑定”为匿名类中方法testo的参数。verifica但是,您可以testo直接从匿名类的外部范围引用(因此它被绑定在实现中,而不是方法的签名中),结果如下:

public abstract class Verifica extends InputVerifier {
    public abstract boolean verifica();
}

testo.setInputVerifier(new Verifica("error") {
     public boolean verifica() {
         if (testo.getText == null) {
            return true;
         } else {
              return false;
         }
       }
  });
于 2016-05-11T11:27:18.757 回答