ОБНОВЛЕНИЕ Мне удалось выяснить это
public class TrainingRecordGUI extends JFrame implements ActionListener, DocumentListener {
добавить DocumentListener в publi c class
, а затем зарегистрировать DocumentListener с текстовыми полями, которые вы хотите используйте
public TrainingRecordGUI() {
add(intervals);
intervals.setEditable(true);
intervals.getDocument().addDocumentListener(this); //addDocumentListener for button enabling
add(labminr);
add(minRest);
minRest.setEditable(true);
minRest.getDocument().addDocumentListener(this);//addDocumentListener for button enabling
add(labloc);
add(loc);
loc.setEditable(true);
loc.getDocument().addDocumentListener(this);//addDocumentListener for button enabling
add(labter);
add(terrain);
terrain.setEditable(true);
terrain.getDocument().addDocumentListener(this);//addDocumentListener for button enabling
add(labtempo);
add(tempo);
tempo.setEditable(true);
tempo.getDocument().addDocumentListener(this);//addDocumentListener for button enabling
}
, затем добавьте окончательный код для случаев, когда кнопка должна быть включена, а когда нет
// Button enabling/disabling code
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
//boolean variables to set run, swim and cycle button enabled
boolean canEnableRn = false;
boolean canEnableSw = false;
boolean canEnableCy = false;
//if anything but necessary fields for run filled
if (intervals.getText().equals("") && minRest.getText().equals("")
|| !intervals.getText().equals("") && minRest.getText().equals("")
|| intervals.getText().equals("") && !minRest.getText().equals("")
|| !loc.getText().equals("") && !terrain.getText().contentEquals("") && !tempo.getText().equals("")) {
canEnableRn = false; // set canEnableRn false to prevent the button to be enabled
}else { canEnableRn = true;} //else set true and allow user to add to run
addRn.setEnabled(canEnableRn); // set button to boolean value
}