0

Add Employee クラスからボタンを制御しようとしているので、ユーザー入力が受け入れられた場合、またはInputVerifierを使用していない場合に無効または有効にできます。私がしたことaddEmployeeButtonのゲッターとセッターを作成しました

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 インスタンスが渡されることを想定しています。nullNullPointerException がスローされるため、値を指定できません。

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
}
}

2回目の試行:

メソッドの外で AddEmployee クラスのインスタンスを作成しようとしたとき。それは私にStackOverFlowErrorを与え、これは作成した私のオブジェクトを指しています。この問題を解決する最善の方法を誰か教えてもらえますか? どんな助けでも大歓迎です。

private AddEmployee employee = new AddEmployee();
4

0 に答える 0