gpt4 book ai didi

javafx - 将节点添加到 JavaFX 中的 TreeItem

转载 作者:行者123 更新时间:2023-12-05 01:03:18 25 4
gpt4 key购买 nike

我有一个 TreeItem<String>目的。

enter image description here

我想在里面放一个按钮。

Button button = new Button("Hello!");
root.setGraphic(button); // root is the TreeItem object

enter image description here

不错,但我想自由定位这个按钮。我想在“根”的右边。

更改按钮的布局 X 似乎没有任何作用。那我该怎么做呢?

最佳答案

您可以创建扩展 HBox 类并包含带有标签和按钮初始化的构造函数声明的自定义类。接下来,您可以使用这个类来指定 TreeView<T>TreeItem<T>通用类型。此类简单 HBox 自定义类的示例如下所示:

import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;

public class CustomItem extends HBox {

private Label boxText;
private Button boxButton;

CustomItem(Label txt) {
super();

this.boxText = txt;

this.getChildren().add(boxText);
this.setAlignment(Pos.CENTER_LEFT);
}

CustomItem(Label txt, Button bt) {
super(5);

this.boxText = txt;
this.boxButton = bt;

this.getChildren().addAll(boxText, boxButton);
this.setAlignment(Pos.CENTER_LEFT);
}
}

它在实践中的使用如下所示:
import javafx.application.Application;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TreeViewDemo extends Application {

public Parent createContent() {

/* layout */
BorderPane layout = new BorderPane();

/* layout -> center */

/* initialize TreeView<CustomItem> object */
TreeView<CustomItem> tree = new TreeView<CustomItem>();

/* initialize tree root item */
TreeItem<CustomItem> root = new TreeItem<CustomItem>(new CustomItem(new Label("Root")));

/* initialize TreeItem<CustomItem> as container for CustomItem object */
TreeItem<CustomItem> node = new TreeItem<CustomItem>(new CustomItem(new Label("Node 1"), new Button("Button 1")));

/* add node to root */
root.getChildren().add(node);

/* set tree root */
tree.setRoot(root);

/* add items to the layout */
layout.setCenter(tree);
return layout;
}

@Override
public void start(Stage stage) throws Exception {
stage.setScene(new Scene(createContent()));
stage.setWidth(200);
stage.setHeight(200);
stage.show();
}

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

效果将如下所示:

enter image description here

关于javafx - 将节点添加到 JavaFX 中的 TreeItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com