我正在创建一个显示具有以下 TreeItems 的 TreeTable 的舞台:照片、文件和视频。当用户选择其中一项时,我希望场景发生更改并显示照片、文件或视频。
我明白了如何获取树项的值并显示。
public void selectedItem(){
TreeItem<String> item = dataTable.getSelectionModel().getSelectedItem();
if(item != null){
System.out.println(item.getValue());
} else if (item == pngFiles) {
System.out.println("You've selected PNG Files");
}
}
我还尝试操作此代码块以使项目变量等于定义的树项目之一。这不起作用。
以下内容可能会有所帮助。您可能需要
tree.getSelectionModel().selectedItemProperty().addListener
。
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class App extends Application {
private final Node rootIcon = new ImageView(
//new Image(getClass().getResourceAsStream("folder_16.png"))
);
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Tree View Sample");
TreeItem<String> rootItem = new TreeItem ("Inbox", rootIcon);
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
TreeItem<String> item = new TreeItem ("Message" + i);
rootItem.getChildren().add(item);
}
TreeView<String> tree = new TreeView (rootItem);
BorderPane root = new BorderPane();
root.setCenter(getViewOne());
root.setLeft(tree);
tree.getSelectionModel().selectedItemProperty().addListener((obs, oldTreeItem, newTreeItem) -> {
if(newTreeItem != null)
{
if(newTreeItem == rootItem.getChildren().get(0))
{
root.setCenter(getViewOne());
}
if(newTreeItem == rootItem.getChildren().get(1))
{
root.setCenter(getViewTwo());
}
else
{
System.out.println("Write code for other cases!");
}
}
});
primaryStage.setScene(new Scene(root, 500, 500));
primaryStage.show();
}
public HBox getViewOne()
{
return new HBox(new Label("View One"));
}
public StackPane getViewTwo()
{
return new StackPane(new Label("View Two"));
}
}
更改代码来自 https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm。