0

I'm new to Java and developing a small project. I'm making a program where the user has to register themselves. I have 3 different tabs on my Tabbed Pane. I want to be able to disable the next button on the first pane making it impossible for the user to continue to pane 2 unless all the text fields on pane 1 have been filled. I have been Searching online and found various examples but none of them would work in run time.

I am using Netbeans.

  private void txtFirstNameActionPerformed(java.awt.event.ActionEvent evt) {                                             

    if(txtFirstName.getText().trim().length() > 0)

        btnNext1.setEnabled(true);
    else 
        btnNext1.setEnabled(false); 
  }
Vikrant Kashyap
  • 6,398
  • 3
  • 32
  • 52
MLL
  • 43
  • 1
  • 9

1 Answers1

2

Create a List of all the text fields on your pane:

List<JTextField> list = new ArrayList<>();

Add all your text fields to that list.

Then, create a universal DocumentListener that listens for text change events, and every time a text update happens, scan through all your text fields to see if they have all been filled:

DocumentListener listener = new DocumentListener() {
    @Override
    public void removeUpdate(DocumentEvent e) { changedUpdate(e); }
    @Override
    public void insertUpdate(DocumentEvent e) { changedUpdate(e); }

    @Override
    public void changedUpdate(DocumentEvent e) {
        boolean canEnable = true;
        for (JTextField tf : list) {
            if (tf.getText().isEmpty()) {
                canEnable = false;
            }
        }
        btnNext1.setEnabled(canEnable);
    }
};

And add that listener to every text field you have in the list:

for (JTextField tf : list) {
    tf.getDocument().addDocumentListener(piecesListener);
}
bobasti
  • 1,778
  • 1
  • 20
  • 28