Я установил мое приложение, чтобы изменить его функцию на основе перечисления. Значение переменной, связанной с этим перечислением, определит, как программа интерпретирует определенные действия, такие как щелчки мыши и т. Д. Мне нужен ярлык (возможно, в области статуса внизу слева), чтобы отразить то, что находится в текущем «режиме» приложения, и отобразить читаемое сообщение для пользователя.Связывание указателя enum toString() с меткой
Вот мое перечисление:
enum Mode {
defaultMode, // Example states that will determine
alternativeMode; // how the program interprets mouse clicks
// My attempt at making a property that a label could bind to
private SimpleStringProperty property = new SimpleStringProperty(this, "myEnumProp", "Initial Text");
public SimpleStringProperty getProperty() {return property;}
// Override of the toString() method to display prettier text
@Override
public String toString()
{
switch(this) {
case defaultMode:
return "Default mode";
default:
return "Alternative mode";
}
}
}
Из того, что я собрал, что я ищу способ, чтобы связать свойство перечисления в ToString() (который я отменяю в более перевариваемую форму) к этому метка. Связывание будет так, что всякий раз, когда я ставлю что-то вроде
applicationState = Mode.alternativeMode;
метка будет отображать toString()
результаты автоматически, без меня необходимости поместить leftStatus.setText(applicationState.toString())
каждый раз, когда я делаю это.
Вот что я пробовал: (в моем главном классе контроллера):
leftStatus.textProperty().bind(applicationState.getProperty());
, который устанавливает метку к исходному тексту, но не будет обновляться, когда я обновляю applicationState
ENUM.
Что я делаю неправильно?
Это фантастический ответ и именно то, что мне нужно. Для любых будущих людей, которые могут наткнуться на это, я мог бы добавить, что мне пришлось корректировать свои операторы switch (когда я проверил, в каком режиме я был), чтобы добавить в конец .get() в конце. Все остальное работает безупречно. Спасибо вам за ваши ответы, я выберу это как лучшее, потому что это самый элегантный и простой в использовании. – Prester