2

CheckBoxTreeView をインスタンス化するたびに、子 TreeItems が選択されていないTreeItem をunselectedにする必要があります。どうすればそれを変更できますか? 親 TreeItem でsetIndependent(true)を呼び出してみましたが、チェックされるにはチェック済みの子 TreeItem が少なくとも 1 つ必要です。

グラフィックとしてチェックボックスを使用してカスタム TreeCell を作成しようとしましたが、アイテムがリセットされないようにする方法がわかりませんでした。この問題はここに投稿されています: https://stackoverflow.com/questions/17606280/javafx-2-checkbox-in-treecell-keeps-resetting-cant-bind-it

4

1 に答える 1

1

あなたの問題は、ツリーの一部を展開または再開すると、TreeView がデフォルトで選択されていない新しい CustomCheckBoxCell を作成することだと思います。CustomCheckBoxCell を配列で追跡し、必要なときに TreeView に渡すことができます。私はそれを解決することができませんでした。

しかし、私は少し明白に聞こえるかもしれません。あなたはすでにそれを試したかもしれませんが、TreeItem<CheckBox>オブジェクトを使用して TreeView に追加してみませんか?

次のコードで問題を再現しようとしましたが、正しいかどうか教えてください。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.CheckBoxTreeItem;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;


public class CheckBoxTreeView extends Application{

    @Override
    public void start(Stage primaryStage) throws Exception {

        CheckBoxTreeItem<CheckBox> rootItem = 
                new CheckBoxTreeItem<CheckBox>(new CheckBox("root"));
        rootItem.setExpanded(true);                  

        final TreeView<CheckBox> tree = new TreeView<CheckBox>(rootItem);  
        tree.setEditable(true);

        for (int i = 0; i < 8; i++) {

            System.out.println("new tree Item");
            final TreeItem<CheckBox> checkBoxTreeItem = 
                    new TreeItem<CheckBox>(new CheckBox(GeoObj.toString()));
            rootItem.getChildren().add(checkBoxTreeItem);                
        }

        tree.setRoot(rootItem);
        System.out.println("root item set");
        tree.setShowRoot(true);

        StackPane root = new StackPane();
        root.getChildren().add(tree);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

あなたのタイプの最初の文字は、良い原則に従って大文字でなければなりません...次に、geoObj -> GeoObj customCheckBoxCell->CustomCheckBoxCell

于 2013-07-24T08:51:12.183 に答える