0

我正在尝试从 Add Employee 类控制按钮,以便在用户输入被接受或不使用InputVerifier时禁用或启用它。我做了什么我为我的addEmployeeButton做了一个 getter 和 setter

public class AddEmployee extends javax.swing.JInternalFrame{

   public JButton getJButton()
   {
       return addEmployeeButton;
   }

   public void setJButton(JButton buttonObject)
   {
       buttonObject = addEmployeeButton;
   }

   private void registerJComponents()
   {   
    //INPUT VERIFIER
    tfLastName.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfFirstName.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfMiddleName.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfNickname.setInputVerifier(new ValidateComponents(addEmployeeButton));
    taAddress.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfContact.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfContactName.setInputVerifier(new ValidateComponents(addEmployeeButton));
    tfContactNo.setInputVerifier(new ValidateComponents(addEmployeeButton));     
   }

}

我正在从另一个名为 ValidateComponents 的类中访问它。但是该disable方法期望传递一个 AddEmployee 实例。我不能给出一个值,null因为这会给我一个 NullPointerException。

public class ValidateComponents extends InputVerifier
{
JButton myButton;

public ValidateComponents(JButton button)
{
    this.myButton = button;
}

public void disable(JButton name, boolean disable, AddEmployee employee)
{
    employee.setJButton(name);
    name.setEnabled(!disable);
}

@Override
public boolean verify(JComponent input) 
{
    String tf = null;
    //String ta = null;
    String name = input.getName(); //GETTING THE NAME OF THE COMPONENT
    if(input instanceof JTextField)
    {
        tf = ((JTextField) input).getText();

        if(name.equals("tfLastName") || name.equals("tfFirstName") || name.equals("tfMiddleName") || name.equals("tfNickname") || name.equals("tfGuardianContactName"))
        {
            boolean valid = tf.trim().length() > 0;

            disable(myButton, !valid);//Button instance
            if(!valid)
            {
                input.setBackground(Color.PINK);//Set background color to pink if false.
                input.setToolTipText("Fields cannot left blank");
                return false;//Return false if the component need to keep focus
            }
            else
            {

            }
        }   
    }
    input.setBackground(Color.WHITE);//Set backgroud color to white if true.
    return true;//Return true if the component should give up focus
}
}

第二次尝试:

当我尝试在方法之外创建 AddEmployee 类的实例时。它给了我一个StackOverFlowError和 this 指向我创建的对象。有人能告诉我解决这个问题的最佳方法是什么吗?任何帮助将不胜感激。

private AddEmployee employee = new AddEmployee();
4

0 回答 0