javafxtreecell的简单介绍

javafx tableview与ObservableList进行数据双向绑定

TableView的数据填充,需要一个ObservableList。其中需要一个类来做数据填充。

下面看看我们数据填充的类:

复制代码代码如下:

import javafx.beans.property.SimpleDoubleProperty;

import javafx.beans.property.SimpleStringProperty;

/**

*

* @author wing

*/

public final class DownloadData {

private final SimpleStringProperty fileName = new SimpleStringProperty();

private final SimpleStringProperty status = new SimpleStringProperty();

private final SimpleStringProperty dlSpeed = new SimpleStringProperty();

private final SimpleDoubleProperty progress = new SimpleDoubleProperty();

private final SimpleStringProperty downloadSize = new SimpleStringProperty();

private final SimpleStringProperty dlPercent = new SimpleStringProperty();

private String uuid;

public DownloadData(String filename, double progress) {

setFileName(filename);

setProgress(progress);

}

public DownloadData(String status, String filename, String dlSpeed, double progress) {

setStatus(status);

setFileName(filename);

setDlSpeed(dlSpeed);

setProgress(progress);

}

/**

* @return the fileName

*/

public String getFileName() {

return fileName.get();

}

/**

* @param fileName the fileName to set

*/

public void setFileName(String fileName) {

this.fileName.set(fileName);

}

public SimpleStringProperty fileNameProperty(){

return fileName;

}

/**

* @return the status

*/

public String getStatus() {

return status.get();

}

/**

* @param status the statusto set

*/

public void setStatus(String status) {

this.status.set(status);

}

public SimpleStringProperty statusProperty(){

return status;

}

/**

* @return the String

*/

public String getDlSpeed() {

return dlSpeed.get();

}

/**

* @param dlSpeed the dlSpeed to set

*/

public void setDlSpeed(String dlSpeed) {

this.dlSpeed.set(dlSpeed);

}

public SimpleStringProperty dlSpeedProperty(){

return dlSpeed;

}

/**

* @return the progress

*/

public double getProgress() {

return progress.get();

}

/**

* @param progress the progress to set

*/

public void setProgress(double progress) {

this.progress.set(progress);

}

public SimpleDoubleProperty progressProperty(){

return progress;

}

public String getDownloadSize() {

return downloadSize.get();

}

public void setDownloadSize(String downloadSize) {

this.downloadSize.set(downloadSize);

}

public SimpleStringProperty downloadSizeProperty(){

return downloadSize;

}

public String getDlPercent() {

return dlPercent.get();

}

public void setDlPercent(String dlPercent) {

this.dlPercent.set(dlPercent);

}

public SimpleStringProperty dlPercentProperty(){

return dlPercent;

}

public String getUUID() {

return uuid;

}

public void setUUID(String uuid) {

this.uuid = uuid;

}

}

记住,用作数据填充的类,一定要用JavaFX的Property机制,可以进行数据绑定,这样在我们改变ObservableList的时候,TableView的数据才会实时刷新。

复制代码代码如下:

private final ObservableListDownloadData data

= FXCollections.observableArrayList();

ObservableListTableColumn observableList = mDownloadTable.getColumns();

observableList.get(0).setCellValueFactory(new PropertyValueFactory(“status”));

observableList.get(1).setCellValueFactory(new PropertyValueFactory(“fileName”));

observableList.get(2).setCellValueFactory(new PropertyValueFactory(“dlSpeed”));

observableList.get(3).setCellValueFactory(new PropertyValueFactory(“downloadSize”));

observableList.get(4).setCellValueFactory(new PropertyValueFactory(“progress”));

observableList.get(4).setCellFactory(ProgressBarTableCell.forTableColumn());

observableList.get(5).setCellValueFactory(new PropertyValueFactory(“dlPercent”));

mDownloadTable.setItems(data);

我们通过TableView.getColumns来获取TableView的所有列。

CellValueFactory指的是TableView每一列里填充的数据。我们这里简单的使用PropertyValueFacotry。后面的要对应你DownloadData中的Property属性名。

CellFactory我们可以指定TableView中某一个Cell的视图类型。大家可以看到我用到了个ProgressBar。

另外CellFactory,JavaFX中自带部分的CellFactory,详细的大家可以在javafx.scene.control.cell包中找到。

接着我们通过创建DownloadData,设置数据,并添加到ObservableList中即可。

javafxtreecell的简单介绍

各位,javafx和swing哪个最界面更加强大

总体来说Swing更稳定,资料更丰富, JavaFX更强大:

一:JavaFX设计思路比较好, 界面和控制逻辑分开, 类似于网页,方便程序员和美术一起协作. 也方便修改.

FXML文件类似于html ,里面放的是 控件和布局

css 文件 就几乎完全一样了, 里面存放的样式 ,用于修饰 控件的外观. 比如换肤功能,只需要切换一下css文件即可

Controller.java文件, 类似于JavaScript ,主要用于行为的控制, 比如点击按钮后的响应等

二:JavaFX组件更丰富 .比如DatePicker,TreeTableView,Pagination,HTMLEditor,ProgressIndicator 等等..特别是WebView 支持html5

三: JavaFX 可以很简单的实现3D效果, 动画, 特效等,

四: JavaFX 支持属性的绑定, 可以更方便的把事件和界面联系在一起,比如 滑块的值,和正方形的边长进行绑定,这样拉动滑块,就可以自动改变正方形的变长, 非常的简洁

五: JavaFX 有原生图表,并且比较美观

六: JavaFX 对多媒体提供了支持, 播放音乐,视频 也是很简单的

当然JavaFX 也还是存在一些问题的,

Swing资料非常丰富, 而JavaFX资料相对较少. Swing可以使用纯Java开发, JavaFX 还需要了解下css , xml 等,学习成本稍高

JavaFX的可视化开发工具SceneBuilder ,个人觉得还不太稳定

JavaFX的异常处理机制不太完美,很多时候抛出的异常不能准确定位, debug需要耗费一些时间.

javafx8 里的tableview对象,怎样在点击某一行时,获取到该行的所有tablecell对象

每一列都是一个TableColumn,我们可以直接创建也可以在JavaFX Scene Builder中创建好。 TableView的数据填充,需要一个ObservableList。其中需要一个类来做数据填充。

怎么使用treeview标签javafx

在JavaFX的com.sun.javafx.scene.control.skin.caspian的包中,有一个caspian.css文件,里面定义了JavaFX的默认样式。

打开文件,搜索“Treeview”,可以找到如下内容:

/************************************************************************

 *                                                                      *

 * TreeView and TreeCell                                                *

 *                                                                      *

 ************************************************************************/ 

.tree-view {

    -fx-skin: “com.sun.javafx.scene.control.skin.TreeViewSkin”;

    -fx-background-color: -fx-box-border, -fx-control-inner-background;

    -fx-background-insets: 0, 1; 

    /* There is some oddness if padding is in em values rather than pixels,

       in particular, the left border of the control doesn’t show. */

    -fx-padding: 1; /* 0.083333em; */

}

javaFX Tree View控件绑定CheckBoxTreeCell获取值

JavaFX 2.0 有监听功能的。比如:

treeVew.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){

    @Override 

    public void changed(ObservableValue observable,Object oldValue, Object newValue){  

    system.out.println(“selection change”);  

        }  

});

还有 监听FocusModel(焦点模型)

treegetFocusModel().focusedItemProperty().addListener(new ChangeListenerTreeItem() {  

            @Override  

            public void changed(  

                    ObservableValue? extends TreeItem observable,  

                    TreeItem oldValue, TreeItem newValue) {  

                    system.out.println(“tree selection changed”);  

            }  

        });

javafx中怎么手动的触发事件,如树节点的更新事件

实现方式:

可以实现采用手动触发事件的方式。

TreeItemAbstractTreeNode currentTreeItem = ****;//当前发生修改的树节点

currentTreeItem.getValue().setNodeText(“abc”);

//自动触发修改的事件,使树节点的显示信息能同步修改

Event.fireEvent(currentTreeItem, new TreeItem.TreeModificationEventAbstractTreeNode(TreeItem.valueChangedEvent(), currentTreeItem, currentTreeItem.getValue()));

构建树节点的显示时自定义渲染方式:

TreeViewAbstractTreeNode leftNodeTree = new TreeViewAbstractTreeNode();

….

leftNodeTree.setCellFactory(new CallbackTreeViewAbstractTreeNode, TreeCellAbstractTreeNode() {

@Override

public TreeCellAbstractTreeNode call(TreeViewAbstractTreeNode param) {

return new TreeCellImpl();

}

});

public class TreeCellImpl extends TreeCellAbstractTreeNode {

@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;

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 10:12:33
下一篇 2024年3月28日 10:19:47

相关推荐

  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • javascriptcanvas的简单介绍

    如何使用js在画布上绘制图形 1、可以使用 drawImage()方法把一幅图像绘制到画布上。 以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML 元素,以及绘制该图像的起点的 x 和 y 坐标。 2、效果图:使用JavaScript在画布中绘制文本图形首先我们来看看要在画布上绘制文本图形,需要用到的最重要的属性和方法:font属性:定义文本的字…

    2024年5月23日
    4200
  • cortexm4linux的简单介绍

    Cortex-M4的主要功能 Cortex-M4提供了无可比拟的功能,以将[1] 32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。 Cortex-M4核心具有浮点单元(FPU)单精度,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。 主要是m4比m3多了dsp的支…

    2024年5月23日
    4300
  • 3desjavaphp的简单介绍

    php的3des加密结果与java不一致 他们的加密算法都是通用的,是可以解开的,只要你des的模式,加密长度,初始向量什么的都一样就可以。 JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关。Padding(填充)属性定义元素边框与元素内容之间的空间。padding简写属性在一个声明中设置所有内边距属性。 要…

    2024年5月23日
    4700
  • 黑客代码软件学习推荐歌曲的简单介绍

    我想自学编程代码,,目地是“黑”网站,开发出破解代码。有没有这方面的… 这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。 我认为这个问题问得本身就显得有点矛盾,想学却担心自己看不懂代码学不来,试问哪个编程人员不是从零开始的。坚定信念…

    2024年5月23日
    4700
  • java8种基本类型范围的简单介绍

    java中常用的数据类型有哪些 1、java数据类型分为基本数据类型和引用数据类型,基本数据类型有boolean 、long 、int 、char、byte、short、double、float。引用数据类型有类类型、接口类型和数组类型。 2、java中包含的基本数据类型介绍:\x0d\x0aJava共支持8种内置数据类型。内置类型由Java语言预先定义好,…

    2024年5月23日
    4700
  • linux系统与gpt的关系的简单介绍

    linux下查看分区是不是gpt 看分区会报错,比如:WARNING: GPT (GUID Partition Table) detected on /dev/sda! The util fdisk doesnt support GPT. Use GNU Parted.所以这个sda就是gpt的。 选择“管理”;在“磁盘管理”中,右键“磁盘0”,在弹出的右键…

    2024年5月23日
    5400
  • 北京黑客学习培训的简单介绍

    现在学什么好啊 包括建筑设计、服装设计、珠宝首饰设计等,选择适合自己的设计专业,好好学习,就业容易且收入高。学前教育专业:很多女生喜欢小孩子,且女生一般细心且有耐心,教育行业假期宽裕,工作环境单纯,就业机会多。 现在比较热门好就业的专业有人工智能、机械专业、电子商务专业、人力资源专业、金融学专业、小语种类专业等等。人工智能:人工智能领域的研究包括机器人、语言…

    2024年5月23日
    4100
  • javaee要学那些东西的简单介绍

    java主要学习哪些内容 1、学java最重要的是下面四个内容:掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\O技术,多线程技术、socket网络编程,XML技术。 2、Java基础:了解Java的基本语法、数据类型、控制流程、数组、字符串等基础概念。学习面向对象编程(OOP)的原则和概念…

    2024年5月23日
    4200
  • excel自杀的简单介绍

    excel表格中宏代码,具有自杀功能,密码输入错误3次就自动删除表格_百度… 我给楼主一个建议,利用excel自身的密码保护,保护此工作簿的结构,将sheet提前隐藏。这样如果有人将同一份excel打开时,如果不能输入正确的密码,就不能将sheet取消隐藏,就能达到楼主所说的保护了。 如果你还有源文件的话,可以这样试试:打开其他的excel文件,…

    2024年5月23日
    8100

发表回复

登录后才能评论



关注微信