JavaFX CheckBoxTreeItem graphic disappear/appear when expanding/collapsing





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I'm trying to make TreeView with CheckBoxTreeItems. When I collapse/expand a CheckBoxTreeItems the image I set up does not display correctly. I googled but I couldn't find correct answer. On Stack Overflow, I found a similar problem, but I didn't get a valid answer.



E.g



JavaFX CheckBoxTreeItem graphic disappear when siblings collapse



JavaFX CheckBoxTreeItem: Graphic disappears if graph is extended



Any ideas?



public class ClientApplication extends Application {

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

@Override
public void start(final Stage stage) {
ImageView folderIcon = new ImageView();
Image folderImage = new Image("image/folder.png");
folderIcon.setImage(folderImage);
folderIcon.setFitWidth(16);
folderIcon.setFitHeight(16);
CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", folderIcon);
rootItem.setExpanded(true);

for (int i = 0; i < 4; i++) {
CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), folderIcon);
rootItem.getChildren().add(checkBoxTreeItem);
}

final TreeView<String> tree = new TreeView<String>(rootItem);
tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
tree.setRoot(rootItem);
tree.setShowRoot(true);


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


enter image description here



I tried to use the ideas provided by @Jai,But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.Thanks in advance.



enter image description here










share|improve this question































    0















    I'm trying to make TreeView with CheckBoxTreeItems. When I collapse/expand a CheckBoxTreeItems the image I set up does not display correctly. I googled but I couldn't find correct answer. On Stack Overflow, I found a similar problem, but I didn't get a valid answer.



    E.g



    JavaFX CheckBoxTreeItem graphic disappear when siblings collapse



    JavaFX CheckBoxTreeItem: Graphic disappears if graph is extended



    Any ideas?



    public class ClientApplication extends Application {

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

    @Override
    public void start(final Stage stage) {
    ImageView folderIcon = new ImageView();
    Image folderImage = new Image("image/folder.png");
    folderIcon.setImage(folderImage);
    folderIcon.setFitWidth(16);
    folderIcon.setFitHeight(16);
    CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", folderIcon);
    rootItem.setExpanded(true);

    for (int i = 0; i < 4; i++) {
    CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), folderIcon);
    rootItem.getChildren().add(checkBoxTreeItem);
    }

    final TreeView<String> tree = new TreeView<String>(rootItem);
    tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
    tree.setRoot(rootItem);
    tree.setShowRoot(true);


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


    enter image description here



    I tried to use the ideas provided by @Jai,But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.Thanks in advance.



    enter image description here










    share|improve this question



























      0












      0








      0








      I'm trying to make TreeView with CheckBoxTreeItems. When I collapse/expand a CheckBoxTreeItems the image I set up does not display correctly. I googled but I couldn't find correct answer. On Stack Overflow, I found a similar problem, but I didn't get a valid answer.



      E.g



      JavaFX CheckBoxTreeItem graphic disappear when siblings collapse



      JavaFX CheckBoxTreeItem: Graphic disappears if graph is extended



      Any ideas?



      public class ClientApplication extends Application {

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

      @Override
      public void start(final Stage stage) {
      ImageView folderIcon = new ImageView();
      Image folderImage = new Image("image/folder.png");
      folderIcon.setImage(folderImage);
      folderIcon.setFitWidth(16);
      folderIcon.setFitHeight(16);
      CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", folderIcon);
      rootItem.setExpanded(true);

      for (int i = 0; i < 4; i++) {
      CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), folderIcon);
      rootItem.getChildren().add(checkBoxTreeItem);
      }

      final TreeView<String> tree = new TreeView<String>(rootItem);
      tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
      tree.setRoot(rootItem);
      tree.setShowRoot(true);


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


      enter image description here



      I tried to use the ideas provided by @Jai,But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.Thanks in advance.



      enter image description here










      share|improve this question
















      I'm trying to make TreeView with CheckBoxTreeItems. When I collapse/expand a CheckBoxTreeItems the image I set up does not display correctly. I googled but I couldn't find correct answer. On Stack Overflow, I found a similar problem, but I didn't get a valid answer.



      E.g



      JavaFX CheckBoxTreeItem graphic disappear when siblings collapse



      JavaFX CheckBoxTreeItem: Graphic disappears if graph is extended



      Any ideas?



      public class ClientApplication extends Application {

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

      @Override
      public void start(final Stage stage) {
      ImageView folderIcon = new ImageView();
      Image folderImage = new Image("image/folder.png");
      folderIcon.setImage(folderImage);
      folderIcon.setFitWidth(16);
      folderIcon.setFitHeight(16);
      CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", folderIcon);
      rootItem.setExpanded(true);

      for (int i = 0; i < 4; i++) {
      CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), folderIcon);
      rootItem.getChildren().add(checkBoxTreeItem);
      }

      final TreeView<String> tree = new TreeView<String>(rootItem);
      tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
      tree.setRoot(rootItem);
      tree.setShowRoot(true);


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


      enter image description here



      I tried to use the ideas provided by @Jai,But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.Thanks in advance.



      enter image description here







      java javafx treeview






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 27 '18 at 6:27







      Andy.Zhang

















      asked Nov 27 '18 at 1:58









      Andy.ZhangAndy.Zhang

      11




      11
























          1 Answer
          1






          active

          oldest

          votes


















          0














          ImageView is a JavaFX control. This means that each instance represents a unique control you see on your screen. You should never use the same instance for multiple locations in your GUI.



          On the other hand, Image represents an image (i.e. an array of pixel data), so it is reusable.



          This should work:



          @Override
          public void start(final Stage stage) {
          final Image folderImage = new Image("image/folder.png");

          CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", createImageView(folderImage));
          rootItem.setExpanded(true);

          for (int i = 0; i < 4; i++) {
          CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), createImageView(folderImage));
          rootItem.getChildren().add(checkBoxTreeItem);
          }

          final TreeView<String> tree = new TreeView<String>(rootItem);
          tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
          tree.setRoot(rootItem);
          tree.setShowRoot(true);


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

          private ImageView createImageView(Image folderImage) {
          ImageView folderIcon = new ImageView();
          folderIcon.setImage(folderImage);
          folderIcon.setFitWidth(16);
          folderIcon.setFitHeight(16);

          return folderIcon;
          }





          share|improve this answer
























          • Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 2:39











          • @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 6:37











          • there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

            – kleopatra
            Nov 27 '18 at 9:43






          • 1





            found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

            – kleopatra
            Nov 27 '18 at 9:57












          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53491691%2fjavafx-checkboxtreeitem-graphic-disappear-appear-when-expanding-collapsing%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          ImageView is a JavaFX control. This means that each instance represents a unique control you see on your screen. You should never use the same instance for multiple locations in your GUI.



          On the other hand, Image represents an image (i.e. an array of pixel data), so it is reusable.



          This should work:



          @Override
          public void start(final Stage stage) {
          final Image folderImage = new Image("image/folder.png");

          CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", createImageView(folderImage));
          rootItem.setExpanded(true);

          for (int i = 0; i < 4; i++) {
          CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), createImageView(folderImage));
          rootItem.getChildren().add(checkBoxTreeItem);
          }

          final TreeView<String> tree = new TreeView<String>(rootItem);
          tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
          tree.setRoot(rootItem);
          tree.setShowRoot(true);


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

          private ImageView createImageView(Image folderImage) {
          ImageView folderIcon = new ImageView();
          folderIcon.setImage(folderImage);
          folderIcon.setFitWidth(16);
          folderIcon.setFitHeight(16);

          return folderIcon;
          }





          share|improve this answer
























          • Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 2:39











          • @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 6:37











          • there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

            – kleopatra
            Nov 27 '18 at 9:43






          • 1





            found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

            – kleopatra
            Nov 27 '18 at 9:57
















          0














          ImageView is a JavaFX control. This means that each instance represents a unique control you see on your screen. You should never use the same instance for multiple locations in your GUI.



          On the other hand, Image represents an image (i.e. an array of pixel data), so it is reusable.



          This should work:



          @Override
          public void start(final Stage stage) {
          final Image folderImage = new Image("image/folder.png");

          CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", createImageView(folderImage));
          rootItem.setExpanded(true);

          for (int i = 0; i < 4; i++) {
          CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), createImageView(folderImage));
          rootItem.getChildren().add(checkBoxTreeItem);
          }

          final TreeView<String> tree = new TreeView<String>(rootItem);
          tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
          tree.setRoot(rootItem);
          tree.setShowRoot(true);


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

          private ImageView createImageView(Image folderImage) {
          ImageView folderIcon = new ImageView();
          folderIcon.setImage(folderImage);
          folderIcon.setFitWidth(16);
          folderIcon.setFitHeight(16);

          return folderIcon;
          }





          share|improve this answer
























          • Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 2:39











          • @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 6:37











          • there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

            – kleopatra
            Nov 27 '18 at 9:43






          • 1





            found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

            – kleopatra
            Nov 27 '18 at 9:57














          0












          0








          0







          ImageView is a JavaFX control. This means that each instance represents a unique control you see on your screen. You should never use the same instance for multiple locations in your GUI.



          On the other hand, Image represents an image (i.e. an array of pixel data), so it is reusable.



          This should work:



          @Override
          public void start(final Stage stage) {
          final Image folderImage = new Image("image/folder.png");

          CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", createImageView(folderImage));
          rootItem.setExpanded(true);

          for (int i = 0; i < 4; i++) {
          CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), createImageView(folderImage));
          rootItem.getChildren().add(checkBoxTreeItem);
          }

          final TreeView<String> tree = new TreeView<String>(rootItem);
          tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
          tree.setRoot(rootItem);
          tree.setShowRoot(true);


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

          private ImageView createImageView(Image folderImage) {
          ImageView folderIcon = new ImageView();
          folderIcon.setImage(folderImage);
          folderIcon.setFitWidth(16);
          folderIcon.setFitHeight(16);

          return folderIcon;
          }





          share|improve this answer













          ImageView is a JavaFX control. This means that each instance represents a unique control you see on your screen. You should never use the same instance for multiple locations in your GUI.



          On the other hand, Image represents an image (i.e. an array of pixel data), so it is reusable.



          This should work:



          @Override
          public void start(final Stage stage) {
          final Image folderImage = new Image("image/folder.png");

          CheckBoxTreeItem<String> rootItem = new CheckBoxTreeItem<String>("folder", createImageView(folderImage));
          rootItem.setExpanded(true);

          for (int i = 0; i < 4; i++) {
          CheckBoxTreeItem<String> checkBoxTreeItem = new CheckBoxTreeItem<String>("Sample" + (i + 1), createImageView(folderImage));
          rootItem.getChildren().add(checkBoxTreeItem);
          }

          final TreeView<String> tree = new TreeView<String>(rootItem);
          tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
          tree.setRoot(rootItem);
          tree.setShowRoot(true);


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

          private ImageView createImageView(Image folderImage) {
          ImageView folderIcon = new ImageView();
          folderIcon.setImage(folderImage);
          folderIcon.setFitWidth(16);
          folderIcon.setFitHeight(16);

          return folderIcon;
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 27 '18 at 2:25









          JaiJai

          5,92811233




          5,92811233













          • Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 2:39











          • @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 6:37











          • there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

            – kleopatra
            Nov 27 '18 at 9:43






          • 1





            found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

            – kleopatra
            Nov 27 '18 at 9:57



















          • Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 2:39











          • @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

            – Andy.Zhang
            Nov 27 '18 at 6:37











          • there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

            – kleopatra
            Nov 27 '18 at 9:43






          • 1





            found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

            – kleopatra
            Nov 27 '18 at 9:57

















          Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

          – Andy.Zhang
          Nov 27 '18 at 2:39





          Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

          – Andy.Zhang
          Nov 27 '18 at 2:39













          @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

          – Andy.Zhang
          Nov 27 '18 at 6:37





          @Jai Thank you.I tried it.But when I click the expand/collapse icon, there is still a problem.Attachment is a screenshot.If you have time, please help me look at it.

          – Andy.Zhang
          Nov 27 '18 at 6:37













          there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

          – kleopatra
          Nov 27 '18 at 9:43





          there are several bugs around images in treeCells (don't have the references handy, please search the bug parade) ... afair, without workarounds

          – kleopatra
          Nov 27 '18 at 9:43




          1




          1





          found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

          – kleopatra
          Nov 27 '18 at 9:57





          found the bug: bugs.openjdk.java.net/browse/JDK-8209017 ... which has a workaround: null the graphic of the checkbox

          – kleopatra
          Nov 27 '18 at 9:57




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53491691%2fjavafx-checkboxtreeitem-graphic-disappear-appear-when-expanding-collapsing%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          Marschland

          Dieringhausen