JavaFX. TreeView. Данные при нажатие на Элементы

95
20 сентября 2019, 06:30

Начал разбираться с JavaFx и появился вопрос. Возможно ли сделать так, что при нажатии на элементы TreeView появлялся текст, который привязан к этому элементу. То есть, грубо говоря, должно получиться так: TreeView - оглавление, TextArea - текст для каждой главы. Если такое можно реализовать, то подскажите, пожалуйста, какие методы надо использовать?

Answer 1
import java.util.ArrayList;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView.EditEvent;
import javafx.scene.control.cell.TextFieldTreeCell;
import javafx.scene.control.TreeView;
import javafx.event.EventHandler;
public class FxTreeViewExample3 extends Application
{
    // Create the TextArea
    private final TextArea textArea = new TextArea();
    public static void main(String[] args) 
    {
        Application.launch(args);
    }
    @Override
    public void start(Stage stage) 
    {
        // Create the TreeViewHelper
        TreeViewHelper helper = new TreeViewHelper();
        // Get the Products
        ArrayList<TreeItem> products = helper.getProducts();
        // Create the TreeView
        TreeView treeView = new TreeView();
        // Create the Root TreeItem
        TreeItem rootItem = new TreeItem("Vehicles");
        // Add children to the root
        rootItem.getChildren().addAll(products);
        // Set the Root Node
        treeView.setRoot(rootItem);     
        // Make the TreeView editable
        treeView.setEditable(true);
        // Set a cell factory to use TextFieldTreeCell
        treeView.setCellFactory(TextFieldTreeCell.forTreeView());
        // Set editing related event handlers (OnEditStart)
        treeView.setOnEditStart(new EventHandler<TreeView.EditEvent>()
        {
            @Override
            public void handle(EditEvent event) 
            {
                editStart(event);
            }
        });
        // Set editing related event handlers (OnEditCommit)
        treeView.setOnEditCommit(new EventHandler<TreeView.EditEvent>()
        {
            @Override
            public void handle(EditEvent event) 
            {
                editCommit(event);
            }
        });
        // Set editing related event handlers (OnEditCancel)
        treeView.setOnEditCancel(new EventHandler<TreeView.EditEvent>()
        {
            @Override
            public void handle(EditEvent event) 
            {
                editCancel(event);
            }
        });
        // Set the preferred number of text rows
        textArea.setPrefRowCount(15);
        // Set the preferred number of text columns
        textArea.setPrefColumnCount(25);
        // Create the VBox
        VBox root = new VBox();
        // Add the TreeView to the VBox
        root.getChildren().addAll(treeView,new Label("Message Log:"), textArea);
        // Create the Scene
        Scene scene = new Scene(root,400,500);
        // Add the Scene to the Stage
        stage.setScene(scene);
        // Set the Title for the Scene
        stage.setTitle("TreeView Example 3");
        // Display the stage
        stage.show();
    }
    // Helper Methods for the Event Handlers
    private void editStart(TreeView.EditEvent event) 
    {
        writeMessage("Started editing: " + event.getTreeItem() );
    }
    private void editCommit(TreeView.EditEvent event) 
    {
        writeMessage(event.getTreeItem() + " changed." +
                " old = " + event.getOldValue() +
                ", new = " + event.getNewValue());
    }
    private void editCancel(TreeView.EditEvent e) 
    {
        writeMessage("Cancelled editing: " + e.getTreeItem() );
    }
    // Method for Logging
    private void writeMessage(String msg)
    {
        this.textArea.appendText(msg + "\n");
    }
}

Подробнее пример описан здесь : https://examples.javacodegeeks.com/core-java/javafx-treeview-example/

READ ALSO
#Полиморфизм java

#Полиморфизм java

Что будет с программным кодом, если объявить объект родительского класса с конструктором дочернего класса? Иначе говоря, какой конструктор...

124
Как можно увидеть исходный код класса Array в Java?

Как можно увидеть исходный код класса Array в Java?

Известный факт что массив в Java это объект, а значит он должен иметь класс из которого мы строим этот объектПо идее он должен быть финальным...

101
Свой источник GPS координат

Свой источник GPS координат

Устройство работает на Android 44

167