JavaFX:TableView侦听器循环

时间:2019-12-15 16:33:13

标签: java javafx tableview

我正在尝试将类似于电子邮件程序的功能实现到JavaFX TableView中,当单击打开邮件(在这种情况下为TableView行)时,它将字体从粗体更改为常规字体。 RowFactory已经基于表中元素的属性实现了更改字体的功能,但是现在我被困在实现表的侦听器中,该侦听器在选定元素时将其更改为“ read”:

table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<Idea>) pChange -> {
        updateideaViewArea();
            for (Idea idea : table.getSelectionModel().getSelectedItems())
            {
                db.setUnread(idea, false);
            }

        createView();
        updateView();
    });

问题可能是在元素更改时循环,但是如何实现以便在元素更改时不循环?

最诚挚的问候

P.W。

1 个答案:

答案 0 :(得分:0)

请尝试提供一个更具体的示例,以说明您正在尝试实现的目标以及迄今为止已尝试的目标。表中的对象和类型会很棒。不可能确定我们能以正确的方式为您提供帮助,并且您会觉得互联网简直就是卑鄙。

话虽如此,如果我正确地跟随您,请在设置专栏时尝试类似的操作...

col.setCellFactory((TableColumn<MyObj, String> tc) -> {
    TableCell<MyObj, String > cell = new TableCell<MyObj, String >() {
        cell.addEventFilter(PrimaryMouseClickEvent.getEventType(), 
                PrimaryMouseClickEvent.getEventHandler(cell,
                         r -> r.getFieldName() != null, (MyObj r) -> {
                             cell.setStyle("....");
                         }));
    };
    return cell;
};

这将更改单元格中有数据时列的行为方式,因此,当您单击单元格时,单元格的样式会更改。