ここに私の例は編集可能な秋の木です。ツリー内の特定の項目が選択されている場合にメソッドを実行する方法は?
public class Main extends Application
{
private BorderPane border;
TreeItem<String> tree;
TreeView<String> treeView;
@Override
public void start(Stage primaryStage)
{
border = new BorderPane();
Scene scene = new Scene(border,750,500);
primaryStage.setTitle("BorderPane");
primaryStage.setScene(scene);
primaryStage.show();
tree = new TreeItem<String>("Library");
TreeItem<String> item1 = new TreeItem<String>("Module");
TreeItem<String> item1Child = new TreeItem<String>("MX");
item1.getChildren().add(item1Child);
TreeItem<String> item2 = new TreeItem<String>("Unite");
TreeItem<String> item2Child = new TreeItem<String>("UX");
item2.getChildren().add(item2Child);
item2.setExpanded(true);
TreeItem<String> item3 = new TreeItem<String>("Translate");
TreeItem<String> item3Child = new TreeItem<String>("TX");
item3.getChildren().add(item3Child);
TreeItem<String> item4 = new TreeItem<String>("Rotate");
TreeItem<String> item4Child = new TreeItem<String>("Rx");
item4.getChildren().add(item4Child);
tree.setExpanded(true);
tree.getChildren().addAll(item1,item2,item3,item4);
treeView = new TreeView<String>(tree);
treeView.setEditable(true);
treeView.setCellFactory(TextFieldTreeCell.forTreeView());
VBox vbox =new VBox(2);
vbox.setPadding(new Insets(5));
VBox.setVgrow(treeView, Priority.ALWAYS);
vbox.getChildren().addAll(new Text("Fall Tree"),treeView);
HBox hb = new HBox();
VBox rightPane = getrightPane();
hb.setSpacing(20);
hb.getChildren().addAll(vbox,rightPane);
border.setCenter(hb);
}
private VBox getrightPane() {
VBox vb = new VBox(30);
vb.setPadding(new Insets(10));
HBox h1 = new HBox(7);
h1.getChildren().addAll(new Label("X:"), new TextField());
HBox box = new HBox(20);
Rectangle rect1 = new Rectangle(150,150);
rect1.setFill(null);
rect1.setStroke(Color.BLACK);
box.getChildren().addAll(rect1);
box.setAlignment(Pos.BOTTOM_CENTER);
vb.getChildren().addAll(h1,box);
return vb;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
launch(args);
}
コメントセクションで見ることができるように、リスナーが適用されますが、枝と葉のテキストの唯一のチェックテキストです。
私の質問は、getrightPane()全体を唯一のリーフにリスナーとして割り当てる方法です(例としてMXとしましょう)。適用されると、他のリーフはgetrightPane()を表示すべきではありません。
選択されたリーフ/ブランチの1つにのみリスナーとしてgetrightPane()を割り当ててください。
ありがとうございます。
を試してみてください。 "私の質問は、getrightPane()全体をリスナーとして、唯一のリーフに割り当てる方法です(例としてMXとします)。適用すると、他のリーフはgetrightPane()を表示しません。 'getRightPane()'はメソッドであり、リスナーではありません。ツリー内の特定の項目が選択されている場合にのみ、そのメソッドを実行したいと言っていますか?もしそうなら、単にあなたが持っているリスナーに 'if'文を置くのはなぜですか? –
@James_Dはい、特定の項目が選択されている場合、そのメソッドを実行します。私はこの
\t \t \tとしようとした場合(selectedItem.getChildren()のisEmpty()){
\t \t \t \t \tのSystem.out.println( "そのmehtod")。他
\t \t \t}
\t \t \t \t {
\t \t \tのSystem.out.println( "そのカテゴリー")。
\t \t \t}
\t \t \t}
\t \t \t \t \t})。
– Mudasir
何が起こったのですか? –