亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaFX - CheckListView 的 SelectionModel

JavaFX - CheckListView 的 SelectionModel

喵喵時光機 2023-08-04 18:59:08
問題描述我有一個包含多個項目(復選框)的 CheckListView。我更改了選擇模式(下面的代碼)以允許多項選擇。但是,當我選擇多行(如下圖所示)并按空格鍵時,只有“當前選定行”會更改狀態。我想要/需要:當我按空格時,切換所有選定的行狀態。我嘗試調查處理程序,但我對要更改的內容感到困惑。任何幫助是極大的贊賞。        @FXML        private CheckListView<String> checkListPermissoes;        @Override        public void initialize(URL url, ResourceBundle rb) {            ...  checkListPermissoes.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

這是一個簡單的解決方法,只需將 keyListener 注冊到列表中,然后當您按 Space 時處理 JavaFx 未處理的項目:


代碼:


public class Controller implements Initializable {

    @FXML private CheckListView<String> list;


    @Override

    public void initialize(URL location, ResourceBundle resources) {


        list.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);


        list.getItems().addAll("Apple", "Lemon", "Orange", "Banana");


        list.setOnKeyPressed(event -> {

            if (event.getCode().equals(KeyCode.SPACE)) {

                revertCheck(list.getSelectionModel().getSelectedIndices());

            }

        });


    }


    private void revertCheck(ObservableList<Integer> selectedIndices) {

        selectedIndices.forEach(index -> {

            // If needed to skip the selected index which is handled by JavaFx

            if (!index.equals(list.getSelectionModel().getSelectedIndex())) {

                if (list.getCheckModel().isChecked(index)) {

                    list.getCheckModel().clearCheck(index);

                } else {

                    list.getCheckModel().check(index);

                }

            }

        });

    }

}

.fxml :


<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.AnchorPane?>

<?import org.controlsfx.control.CheckListView?>

<AnchorPane xmlns="http://javafx.com/javafx"

            xmlns:fx="http://javafx.com/fxml"

            fx:controller="checklist.Controller">

<CheckListView fx:id="list"/>

</AnchorPane>


查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號