@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) {

  }

}
  • Вопрос задан
  • 608 просмотров
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы