私は予約システム用のインターフェイスで作業しています。ウィンドウでは、そのスロットが利用可能であるかどうかを確認するために、予約の開始時刻と予約の終了時刻を取得する必要があります。 (hh:mmだけ興味があり、私はその日のどこかにいる)。 コンボボックスは、次のようになります。JavaFXは、変更可能な入力に基づいていくつかのアイテムを無効にするためのComboBoxアイテムリストを更新します。
//startTime HBox
HBox startTime = new HBox();
startTime.setSpacing(5);
final ComboBox startHours = new ComboBox(hours);
final ComboBox startMinutes = new ComboBox(minutes);
final Label colon = new Label(":");
startTime.getChildren().addAll(startHours,colon,startMinutes);
それはendTimeのために同じである(同じ要素を持つHBoxのがちょうど
変数名を変更し、私は私のstartTime時間コンボボックスが自動的より高いこれらの項目を無効にします現在のendTimeコンボボックス時間、およびその逆の場合は、startTimeコンボボックスよりも低いendTime時間項目を無効にします。 コンボボックスを編集する前にコンボボックスを開いた場合、セルファクトリを作成しようとしました。他のコンボボックス
startHours.setCellFactory(
new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> param) {
final ListCell<String> cell = new ListCell<String>() {
@Override public void updateItem(String item,
boolean empty) {
super.updateItem(item, empty);
if (item!=null){
setText(item);
}
if ((endHours.getValue()!=null) && (endHours.getValue().toString().compareTo(item)<0)){
setDisable(true);
setStyle("-fx-background-color: #ffc0cb");
}
}
};
return cell;
}
});
これは私に多くの助けになります...その間、私は "Submit"ボタンonActionイベントのcuzでいくつかのエラーチェックを行うことにしました。私はこの方法が複雑すぎると思いました。しかし、あなたの答えはそれが難しいことではないことを証明します。リスナーとイベントの違いを説明するために、私の隣に誰かがいたことを祈っています:dその間に、ありがとう – SirWinning