Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Change listener not notified when tree item is deselected

885593May 21 2012 — edited May 21 2012
I'm attaching a listener to the selected index property of the tree view selection model to detect when a user selects or deselects on or more nodes in a tree, but it appears that the listener is not notified when a user deselects a node. So if a user selects two nodes and then while holding down the Ctrl key deselects one of the selected nodes the tree view control deselects the node, but the change listener is not notified. Is this is a bug or am I doing something wrong?

I’m using the GA version of JavaFX 2.1 on Windows 7.

Thanks.
Stefan

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TreeViewSample extends Application {

private final Node rootIcon = new ImageView(
new Image(getClass().getResourceAsStream("Folder.gif"))
);

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

@Override
public void start(Stage primaryStage)
{
primaryStage.setTitle("Tree View Sample");

TreeItem<String> rootItem = new TreeItem<String> ("Inbox", rootIcon);
rootItem.setExpanded(true);

for (int i = 1; i < 6; i++)
{
TreeItem<String> item = new TreeItem<String> ("Message" + i);
rootItem.getChildren().add(item);
}

TreeView<String> tree = new TreeView<String> (rootItem);
tree.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
tree.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>()
{
@Override
public void changed(ObservableValue<? extends Number> ov, Number oldIndex, Number newIndex)
{
System.out.println("selection changed");
}
});

StackPane root = new StackPane();
root.getChildren().add(tree);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
This post has been answered by john16384 on May 21 2012
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 18 2012
Added on May 21 2012
2 comments
1,545 views