Начал разбираться с JavaFx и появился вопрос. Возможно ли сделать так, что при нажатии на элементы TreeView появлялся текст, который привязан к этому элементу. То есть, грубо говоря, должно получиться так: TreeView - оглавление, TextArea - текст для каждой главы. Если такое можно реализовать, то подскажите, пожалуйста, какие методы надо использовать?
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/
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Что будет с программным кодом, если объявить объект родительского класса с конструктором дочернего класса? Иначе говоря, какой конструктор...
Известный факт что массив в Java это объект, а значит он должен иметь класс из которого мы строим этот объектПо идее он должен быть финальным...