一个相对的Java新手问题.
我有一个带有提取器的TableView,并ListChangeListener添加到底层的ObservableList中.
如果我StringProperty在数据模型中有一个列,那么如果我双击单元格然后按Enter键而不做任何更改,则更改侦听器不会检测到更改.非常好.
但是,如果我将列定义为ObjectProperty<String>并双击然后按Enter,则更改侦听器始终会检测到更改,即使没有进行更改也是如此.
为什么会这样?改变听众的观点ObjectProperty<String>和StringProperty改变之间的区别是什么?
我已经阅读了SimpleStringProperty和StringProperty以及JavaFX SimpleObjectProperty <T>与SimpleTProperty之间的差异,并认为我理解这些差异.但是我不明白为什么改变监听器给TProperty/ SimpleTProperty和提供不同的结果ObjectProperty<T>.
如果它有帮助,这是一个MVCE我的有点荒谬的情况.我实际上是想让一个改变监听器工作BigDecimal和LocalDate列,并且已经坚持了5天.如果我能理解为什么更改侦听器提供不同的结果,我可能能够使我的代码工作.
我正在使用JavaFX8(JDK1.8.0_181),NetBeans 8.2和Scene Builder 8.3.
package test17;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.beans.Observable;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.util.converter.DefaultStringConverter;
public class …Run Code Online (Sandbox Code Playgroud) 一个CSS新手问题。
我正在两个相邻的TableViews中显示大量数据,并已双向绑定它们ScrollBar的FocusModels和SelectionModels,以使它们保持同步。
我现在正试图使两个TableView看起来像一个,并且想要拥有:
TableView s 周围的默认蓝色边框。 TableViewTableView时,两个 s 周围的默认灰色边框。TableViews相交处无国界。我将如何去做?
像这样的东西会很棒:
到目前为止,我已经可以通过执行以下操作删除“相遇”边界:
tvLeft.getStyleClass().add("my-table-view-left");
tvRight.getStyleClass().add("my-table-view-right");
Run Code Online (Sandbox Code Playgroud)
使用这样的CSS:
.my-table-view-left:focused {
-fx-background-insets: -1.4 0 -1.4 -1.4, -0.3 0 -0.3 -0.3, 1 0 1 1;
}
.my-table-view-right:focused {
-fx-background-insets: -1.4 -1.4 -1.4 0, -0.3 -0.3 -0.3 0, 1 1 1 0;
}
Run Code Online (Sandbox Code Playgroud)
TableView当选中其中一个行时,这也可以正确地将边框设置在单个边框上。
但是,我想不出如何让周围的边框既 TableView ■当任一具有焦点。
这是MVCE。抱歉,因为它的长度,但是我需要包括同步代码才能拥有一个测试用例。
我正在使用在Windows 7的Netbeans …