Проблема в том, что вы устанавливаете действие в цикле. То есть один объект действия создается для каждой пары, а затем присваивается. Таким образом, после последней итерации действие будет установлено на последний объект, который, очевидно, проверяет последнюю пару имя пользователя-пароль.
цикл переводит что-то вроде,
setOnAction (actionobject1, который проверяет admin1, apple, admin)
setOnAction (actionobject2, который проверяет персонал1, оранжевый, персонал)
Эффективно сохраняет последний созданный объект и проверяет только последнюю пару
Возможно, вы захотите изменить свою логику так, чтобы существовал только один объект действия. А затем проверьте правильность пары имя пользователя и пароль.
Примерно так:
btnLogin.setOnAction(e -> {
while (in.hasNextLine() ) {
// check condition here
// don't forget to break when successful
}
in.close();
});
Кроме того, убедитесь, что вы разорвали петлю, как только удачная пара найдена В противном случае произойдет то же самое.