今天,在尝试学习有关JavaFX和Java的更多信息时,我遇到了我不太了解的另一件事。
参考是以下教程(旨在将原理应用到组织者):
JavaFX 8教程
我将简要概述我遇到问题的特定部分:
我的主窗口包含一个显示一些约会数据的表格视图。所以我得到了这种风格的几行(与本教程相同):
aColumn.setCellValueFactory(cellData ->cellData.getValue().getAColumnsProperty());
可以通过附加的EditDialog操纵数据。那很好。如果我编辑内容,则更改会立即显示,但我进行了一些其他研究以更好地了解Lambda(不太成功)。现在…在线Java文档Java
Doc
PropertyValueFactory中,
它说:“回调接口的便捷实现,[…]”
所以我将代码重构为这种样式:
aColumn.setCellValueFactory(new PropertyValueFactory<Appointment,LocalDate>("date"));
我发现它比Lambda更具可读性。但是我注意到,当我进行更改时,需要在TableView上进行一些排序,然后才能显示更改。
在第二种方法中是否可以立即显示变化?
如果是,是否有重大挫折会阻止这种修改?即在这种情况下Lambda会是最佳实践吗?
感谢您的帮助。
PropertyValueFactory
需要正确命名的属性获取器。getAColumnsProperty
可能不是一个。
在的情况下new PropertyValueFactory<Appointment, LocalDate>("date")
的Appointment
类需要包含一个dateProperty()
方法;
返回的值需要扩展ReadOnlyProperty
才能正常工作,并且如果返回的对象也是,则任何编辑只会自动导致模型中的更新WritableValue
。
Appointment
应使用的示例类PropertyValueFactory<>("date")
:
public class Appointment {
private final ObjectProperty<LocalDate> date = new SimpleObjectProperty<>();
public final LocalDate getDate() {
return this.date.get();
}
public final void setDate(LocalDate value) {
this.date.set(value);
}
public final ObjectProperty<LocalDate> dateProperty() {
return this.date;
}
}
如果不存在这样的方法,PropertyValueFactory
则将使用getter来获取值,即getDate()
,但是这种情况下,直到更新,在UI中才能看到模型中的更新Cell
,因为PropertyValueFactory
“不知道”在何处添加侦听器。
PropertyValueFactory
public
在public
类中找到方法PropertyValueFactory
使用反射new PropertyValueFactory<Appointment, LocalDate>("date")
编译器中不检查是否有合适的方法,该方法是否返回合适的类,或者例如属性getter返回a String
而不是ReadOnlyProperty<LocalDate>
可以导致ClassCastException
s的a。PropertyValueFactory
没有这样做。如果您确定正确地在item类中实现适当的方法,则使用不会有任何问题PropertyValueFactory
,但是如上所述,它有其缺点。此外,实施Callback
更加灵活。您可以例如进行一些其他修改:
TableColumn<Appointment, String> column = ...
column.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Appointment, String>, ObservableValue<String>> {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Appointment, String> cd) {
Appointment a = cd.getValue();
return Bindings.createStringBinding(() -> "the year: " + a.getDate().getYear(), a.dateProperty());
}
});
今天,我在学习JavaFX和Java时遇到了另一件我并不真正理解的事情。 参考以下教程(我试图将该原则应用于组织者): 我的主窗口包含一个tableview,它显示一些约会数据。所以我得到了一些这种风格的线条(与教程中相同): 可以通过附加的EditDialog操作数据。很好用。如果我编辑东西,更改会立即显示,但我做了一些额外的研究来更好地理解Lambda(不太成功)。现在...在在线java文档
问题内容: 我考虑过摆脱所有客户端Ajax调用(jQuery),而是使用永久套接字连接(Socket.IO)。 因此,我将在客户端和服务器端使用事件侦听器/发射器。 例如 用户在浏览器中触发click事件,客户端发射器通过套接字连接将事件推送到服务器。服务器端侦听器对传入事件做出反应,并将“完成”事件推回客户端。客户端的侦听器通过淡入DIV元素来响应传入的事件。 这完全有意义吗?优点缺点? 问题答
问题内容: Hibernate和EJB3相对于彼此的优缺点是什么? 我找到了这篇文章,但并没有真正解决我的问题。如果我对这两种技术没有任何特别的联系,那是什么导致我选择一项而不是另一项呢?还是在某些情况下我想同时使用两者? 谢谢 编辑:回应评论:我对EJB3不太了解。 我只是想了解它是否对我的公司可行。如果EJB3与Hibernate不兼容,请解释原因。 问题答案: JPA提供了Hibernate
问题内容: 我正在检查是否存在目录,但是我注意到我正在使用而不是。两者都很好,但是我很好奇使用代替的优势。 问题答案: 如果存在具有该名称的常规文件,也将返回。 仅当该路径存在且为目录或指向目录的符号链接时才返回。
我是这里的java新手,我在阅读注释和xml,我个人发现xml有很多优点,比如它可以放在应用程序之外,可以在不重新编译类文件的情况下进行更改。如果我使用注释,如果我需要进行更改,则需要转到源代码并重新编译。如果是这样,我们为什么要使用注释
主要内容:Tableau的优点,Tableau的缺点Tableau的优点 Tableau的优点如下 - 数据可视化: Tableau是一种数据可视化工具,提供复杂的计算,数据混合和仪表板,用于创建漂亮的数据可视化。 快速创建交互式可视化: 用户可以使用Tableau的拖放功能创建非常交互式的可视化。 实施舒适: Tableau中提供了许多类型的可视化选项,可增强用户体验。与Python相比,Tableau非常容易学习。对编码不了解的用户也可以快速学