JavaFX:当选择其中之一时,2 个单选按钮将禁用文本字段

标签 java javafx

基本上我正在尝试获取酒店预订表格,有 2 个选择:

  • 配备一张双人床的“情侣房”,其中不能放置其他床,或者
  • 一间配有独立床位的客房,最多可容纳 4 张床。

这是场景:/image/SHk0Z.jpg

我一直在尝试制作一个文本字段“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) {

    }
}

有人可以帮忙吗?

最佳答案

检查选择哪个 RadioButton 的代码仅执行一次 - 当 ReservationControleur 初始化时,这不是您需要的。

每次选择“Couple” RadioButton 时,您都希望将“nbrlits” TextView 的状态更改为“已禁用”,因此需要将这两个属性绑定(bind)在一起。

更改此:

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()); 

关于JavaFX:当选择其中之一时,2 个单选按钮将禁用文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52465852/

相关文章:

java - Lombok @Synchronized 与 Mockito 抛出 NPE

javafx - 使 FlowPane 适合 ScrollPane

Java静态对象/方法问题

java - 程序显示空指针异常....将 double 转换为 int

Java 事务 - 在 conn 上提交不会

java - fxml 中定义的自定义控件 - 如何获取父 ID?

java - 动态 Javafx View 的 Controller 类

JavaFX MenuButton 仅作为具有 MenuButton 功能的图形或图标

java - 什么时候可以访问 FXML 属性?

java - 使用 DFS 检测无向图中的循环