@lonata

Как присвоить определённому числу из текстового поля определённое строковое имя?

Пишу приложение на java, используя javafx и scene builder.
В одном из полей нужно ввести цифру от 0 до 5.
Как сделать,чтобы каждое число соответствовало определённому имени?
то есть:
-назначить каждому числу какое-либо название.Например:
-получить из текстового поля число
-положить число в переменную, которая будет отображать название, соответствующее числу
0 - "none"
1 - "development"
2 - "management"
3 - "accounting"
4 - "sales"
5 - "SEO"

В дальнейшем переменную каждого числа я буду обрабатывать, например выводить в другое текстовое поле
Вот как я получил текст из поля. Возможно это неправильный вариант получения числа
String departments = department.getText();

Код класса Controller:

package Email;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextField;
import javafx.scene.control.Label;
import javafx.event.ActionEvent;
import javafx.scene.input.MouseEvent;

import java.net.URL;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Controller implements Initializable {


  //initialize fx:id fields
  @FXML
  private TextField name, lastName, company, department;
  @FXML
  private Label displayName, displayEmail, displayPassword, errorName, errorLastName, errorCompany, errorDepartment;

  //The Method that shows result by clicking the button
  @FXML
  private void showResult(ActionEvent event) {

    //Take input from text fields
    String names = name.getText();
    String lastnames = lastName.getText();
    String companies = company.getText();
    String departments = department.getText();



    //create operator IF that checks if all fields are not empty and print result
    if (name.getText() == null || name.getText().trim().isEmpty()
        || lastName.getText() == null  || lastName.getText().trim().isEmpty()
        || company.getText() == null || company.getText().trim().isEmpty()
        || department.getText() == null || department.getText().trim().isEmpty())
    {
      display();

    } else {
      displayName.setText("Name : " + names + " " + lastnames);
      displayEmail.setText("Email : " + names + "." + lastnames + "@");
      displayPassword.setText("Password : ");
    }

    //adding the method checkFields to every field, just to simplify the code
    checkFields(name, errorName);
    checkFields(company, errorCompany);
    checkFields(department, errorDepartment);
    checkFields(lastName, errorLastName);
  }



 //Method that validates department textfield. This makes only numbers accepted
  @FXML
  boolean validateNumber(MouseEvent event) {
    Pattern p = Pattern.compile("[0-5]");
    Matcher m = p.matcher(department.getText());
    if (m.find() && m.group().equals(department.getText())) {
      department.getStyleClass().removeAll("error-field");
      errorDepartment.setText("");
      return true;
    } else {
      display();
      department.getStyleClass().add("error-field");
      errorDepartment.setText("Only 0-5 number is accepted!");
      return false;

    }
  }


  //Method that doesn't show result for all items when clicking a button
  private void display() {
    displayName.setText("");
    displayEmail.setText("");
    displayPassword.setText("");


  }

  //The method that makes checking. If a field is empty, method add red color to a field and add red label under a field
  private void checkFields(TextField lastName, Label errorLastName) {
    if (lastName.getText() == null || lastName.getText().trim().isEmpty()) {
      lastName.getStyleClass().add("error-field");
      errorLastName.setText("Field is Empty!");
    } else {
      lastName.getStyleClass().removeAll("error-field");
      errorLastName.setText("");
    }
  }

  //Method that provides acces to fields FXML
  @Override
  public void initialize(URL location, ResourceBundle resources) {

  }

}
  • Вопрос задан
  • 596 просмотров
Пригласить эксперта
Ответы на вопрос 2
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Не знаю, правильно ли я понял суть проблемы, но попробуте взять Map:

Map<Integer, String> values = new HashMap<>();
values.put(0, "none");
values.put(1, "development");
// и т.д.


И затем получайте нужное значение:
values.get(Integer.parseInt(department.getText()));

Только убедитесь, что в текстовое поле нельзя ввести ничего, кроме нужных вам чисел.
Ответ написан
@kuftachev
Первое, магические числа - это страшный косяк.

Второе, если нужно использовать выбор для ограниченного количества значений, то нужно использовать Enum.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы