JavaFX: 2 переключателя отключают текстовое поле, когда выбрана одна из них - PullRequest
0 голосов
/ 23 сентября 2018

В основном я пытаюсь получить форму бронирования для отеля, и есть 2 варианта:

  • либо "номер для пар" с двуспальной кроватью, которая не может иметь другие кровати вэто или
  • комната с раздельными кроватями, в которой можно получить до 4 спальных мест.

Это сцена: https://imgur.com/a/5GdgFAg

Я пытался создать текстовое поле "Nombre de lits".Он должен быть отключен всякий раз, когда выбран переключатель «пара».Он должен быть включен, когда я нажимаю переключатель «Lits separés».Но текстовое поле остается отключенным, даже когда я нажимаю на эту кнопку.

Я пытался заставить это работать, но безуспешно.Это мой код:

package controleur;

import java.time.LocalDate; import java.time.format.DateTimeFormatter;

import accesBD.ClientDAO; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.DatePicker; import javafx.scene.control.RadioButton; import javafx.scene.control.TextField; import javafx.scene.control.ToggleGroup; import metier.Client;

public class ReservationControleur {

    private ClientDAO bd = new ClientDAO();

    @FXML
    private TextField nom;

    @FXML
    private TextField prenom;

    @FXML
    private TextField nationalite;

    @FXML
    private DatePicker datedebut;

    @FXML
    private TextField numtel;

    @FXML
    private DatePicker datefin;

    @FXML
    private RadioButton couple;

    @FXML
    private RadioButton litss;

    @FXML
    private RadioButton douche;

    @FXML
    private RadioButton bain;

    @FXML
    private TextField nbrlits;

    @FXML
    private RadioButton standard;

    @FXML
    private RadioButton inclusive;

    @FXML
    private RadioButton vip;

    @FXML
    private Button valider;

    @FXML
    private Button anuuler;
    private ToggleGroup group = new ToggleGroup(); 
    private ToggleGroup group1 = new ToggleGroup();

    @FXML   private void isClicked(ActionEvent event){

    }

    public void initialize() {

        datedebut.setValue(LocalDate.now());

        couple.setToggleGroup(group);
        couple.setSelected(true);
        litss.setToggleGroup(group);
        douche.setToggleGroup(group1);
        bain.setToggleGroup(group1);
        douche.setSelected(true);
        if(couple.isSelected())
            nbrlits.setDisable(true);
        else
            nbrlits.setDisable(false);
        }


    @FXML
    void confirmer(ActionEvent event) {
        int ntel = Integer.parseInt(numtel.getText());
        Client c = new Client(nom.getText(), prenom.getText(), nationalite.getText(), ntel);
        bd.add(c);
    }

    @FXML
    void remiseazero(ActionEvent event) {

    }
}

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 23 сентября 2018

Код, который проверяет, какой RadioButton выбран, выполняется только один раз - при инициализации ReservationControleur, а это не то, что вам нужно.

Вы хотите изменить состояние TextView "nbrlits" на "отключено" каждый раз, когда выбирается "пара" RadioButton, поэтому вам необходимо связать эти два свойства вместе.

Изменить это:

if(couple.isSelected())
    nbrlits.setDisable(true);
else
    nbrlits.setDisable(false);
}

в это:

//set "nbrlits" to disabled state each time "couple" radiobutton is selected
nbrlits.disableProperty().bind(couple.selectedProperty()); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...