小编Gre*_*bra的帖子

为什么TableView的更改侦听器为JavaFX8中的ObjectProperty <T>与TProperty列提供不同的结果?

一个相对的Java新手问题.

我有一个带有提取器的TableView,并ListChangeListener添加到底层的ObservableList中.

如果我StringProperty在数据模型中有一个列,那么如果我双击单元格然后按Enter键而不做任何更改,则更改侦听器不会检测到更改.非常好.

但是,如果我将列定义为ObjectProperty<String>并双击然后按Enter,则更改侦听器始终会检测到更改,即使没有进行更改也是如此.

为什么会这样?改变听众的观点ObjectProperty<String>StringProperty改变之间的区别是什么?

我已经阅读了SimpleStringProperty和StringProperty以及JavaFX SimpleObjectProperty <T>与SimpleTProperty之间的差异,并认为我理解这些差异.但是我不明白为什么改变监听器给TProperty/ SimpleTProperty和提供不同的结果ObjectProperty<T>.

如果它有帮助,这是一个MVCE我的有点荒谬的情况.我实际上是想让一个改变监听器工作BigDecimalLocalDate列,并且已经坚持了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)

javafx tableview propertychangelistener javafx-8

5
推荐指数
1
解决办法
142
查看次数

如何使用CSS为两个相邻TableView的边框设置样式,以使其在JavaFX 11(OpenJFX 11)中看起来像是单个TableView

一个CSS新手问题。

我正在两个相邻的TableViews中显示大量数据,并已双向绑定它们ScrollBarFocusModels和SelectionModels,以使它们保持同步。

我现在正试图使两个TableView看起来像一个,并且想要拥有:

  1. 两个都有焦点时,两个 TableView s 周围的默认蓝色边框。 TableView
  2. 两者都 没有焦点TableView时,两个 s 周围的默认灰色边框。
  3. 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 …

css javafx tableview openjfx javafx-11

5
推荐指数
1
解决办法
147
查看次数