应用场景:
修改树节点的显示字段,但是树节点并没有refresh或者重新渲染的方法来实现树节点的刷新从而来感知这种修改。
实现方式:
可以实现采用手动触发事件的方式。
TreeItem<AbstractTreeNode> currentTreeItem = ****;//当前发生修改的树节点
currentTreeItem.getValue().setNodeText("abc");
//自动触发修改的事件,使树节点的显示信息能同步修改
Event.fireEvent(currentTreeItem, new TreeItem.TreeModificationEvent<AbstractTreeNode>(TreeItem.valueChangedEvent(), currentTreeItem, currentTreeItem.getValue()));
构建树节点的显示时自定义渲染方式:
TreeView<AbstractTreeNode> leftNodeTree = new TreeView<AbstractTreeNode>();
....
leftNodeTree.setCellFactory(new Callback<TreeView<AbstractTreeNode>, TreeCell<AbstractTreeNode>>() {
@Override
public TreeCell<AbstractTreeNode> call(TreeView<AbstractTreeNode> param) {
return new TreeCellImpl();
}
});
public class TreeCellImpl extends TreeCell<AbstractTreeNode> {
@Override
public void updateItem(AbstractTreeNode item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
setText(item.getNodeText());
setGraphic(item.getGraphic());
if (item.getNodeType().equals(NodeType.TREE_CONFIG_NODE)) {
setContextMenu(new TreeConfigContextMenu(this.getTreeView(), this.getTreeItem(), item));
} else if (item.getNodeType().equals(NodeType.TREE_DETAIL_CONFIG_NODE)) {
setContextMenu(new TreeDetailConfigContextMenu(this.getTreeView(), this.getTreeItem(), item));
} else if (item.getNodeType().equals(NodeType.SHAREDATA_FIELDS_NODE)) {
// setContextMenu(new TreeConfigContextMenu(item));
}
}
}
}
class AbstractTreeNode {
private String nodeId;
private String nodeText;
public String getNodeId() {
return nodeId;
}
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
public String getNodeText() {
return nodeText;
}
public void setNodeText(String nodeText) {
this.nodeText = nodeText;
}
分享到:
相关推荐
在JavaFX中,窗口(Stage)是场景(Scene)的容器,场景是实际的UI布局内容,如按钮、文本框等。开发JavaFX应用程序时,管理窗口的关闭事件是一项重要的任务,特别是在涉及到多线程时。在多线程环境下,如果程序退出...
- **定义**:事件过滤器允许开发者在事件传递过程中拦截事件,并决定是否继续传递事件给下一个节点。 - **示例**:可以创建一个`EventHandler<MouseEvent>`实例,并将其添加到节点的`setOnMousePressed`方法中。 ##...
在 JavaFX 中,我们可以使用鼠标触发事件来更新 TableView 的内容。例如,我们可以在鼠标滑过单元格时更新其内容,或者在鼠标点击单元格时触发编辑事件。下面是一个简单的示例代码: ```java public class ...
- **事件源**:触发事件的对象,可能会随着事件传播路径的变化而变化。 - **目标**:事件发生的节点或最后一个节点,目标不会改变。 ##### 2.2 事件类型(EventTypes) 事件类型由`EventType`类表示。事件类型可以...
在这个过程中,你会了解到如何在JavaFX中使用各种控件,如TableView的行选择和ObservableLists的数据绑定,以及如何通过MVC模式分离业务逻辑和界面显示。此外,你还将掌握如何利用Scene Builder的拖放功能来快速搭建...
JavaFX中的数据交互通常通过事件处理和公共变量来实现。事件处理是通过监听器实现的,当用户触发某个操作(如点击按钮)时,相应的事件处理器会被调用。例如,一个按钮的点击事件可以用来打开新窗口或传递数据。 `...
此外,JavaFX还支持手势识别,如拖放操作和触摸事件,使得应用更具互动性。 除此之外,JavaFX 2.0的多媒体支持也是一大亮点。它内建了对音频和视频的播放支持,包括流媒体,开发者可以轻松地在应用中嵌入多媒体内容...
在JavaFX中,`TableView`是用于显示二维数据的组件,通常与数据模型(如`ObservableList`)绑定。在这个类中,你可以看到如何定义列(`TableColumn`),设置列头文本,以及定义数据如何与列关联。此外,`Customer...
在JavaFX中处理用户交互通常涉及事件处理。例如,当用户点击登录按钮时,会触发一个ActionEvent。我们可以通过为Button添加一个事件监听器,来实现处理用户输入的功能。监听器方法会在事件发生时被调用,通常会检查...
* MouseEvent:MouseEvent 是 JavaFx 中的鼠标事件类,提供了鼠标事件处理的功能。 * KeyEvent:KeyEvent 是 JavaFx 中的键盘事件类,提供了键盘事件处理的功能。 布局和对齐 * Layout:Layout 是 JavaFx 中的布局...
在JavaFX中,实现这一功能主要依赖于`Dragboard`、`TransferMode`和事件处理器如`onDragDetected`、`onDragEntered`、`onDragExited`、`onDragOver`、`onDragDropped`以及`onDragDone`。 首先,我们需要定义源节点...
3. **Scene和Stage**:在JavaFX中,Stage是应用程序的顶级窗口,而Scene则是Stage内显示的内容区域。一个Stage可以包含多个Scene,每个Scene有自己的布局和组件。 4. **FXML和控制器**:为了实现多窗口触发,可以...
在JavaFX中,我们可以利用其丰富的图形和媒体处理能力来实现动态的图像操作,如放大、缩小和移动图片。本项目就是针对这些需求,提供了一个在JavaFX环境中能够同时进行图片缩放和移动的实例。 在JavaFX中,我们通常...
每个图形元素都是树形结构中的一个节点,这种结构允许高效地渲染和操作用户界面。 3. **FXML**: FXML是一种XML格式的文件,用于描述JavaFX用户界面的布局和控件。它允许将UI设计与业务逻辑分离,方便使用Java控制器...
JavaFX中的布局管理器,被称为布局窗格(Pane),它们负责管理其子节点的位置和大小,能够适应窗口的缩放,并且提供了多种布局方式,如边框布局(BorderPane)、水平盒子布局(HBox)、垂直盒子布局(VBox)、网格...
在这个例子中,我们首先加载了 FXML 文件 `Sample.fxml`,并将其设置为场景的根节点。接下来创建了一个舞台,并设置了舞台的标题、场景以及显示。 #### 结论 通过这个简单的示例,我们可以看到 FXML 在创建复杂的...
本主题聚焦于JavaFX中的用户登录系统及其页面跳转机制。 在JavaFX中实现登录功能通常涉及以下步骤: 1. **创建UI组件**:首先,我们需要使用JavaFX的控件库来设计登录界面,这可能包括`Label`(用于提示信息)、`...
2. **CSS样式和皮肤化**:JavaFX允许使用CSS来样式化和布局控件,这与Web开发中的CSS语法非常相似,降低了学习曲线,同时提高了应用程序的外观一致性。 3. **动态性和响应性**:JavaFX支持数据绑定和反应式编程,...
在JavaFX中,JFreeChart是一个非常有用的库,它允许开发者创建各种复杂的图表,如折线图、柱状图、饼图、散点图等。本文将深入探讨如何结合JavaFX与JFreeChart来实现图表的生成。 首先,我们需要了解JFreeChart库的...