第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JAVAFX:Tableview行選擇行為

JAVAFX:Tableview行選擇行為

收到一只叮咚 2021-04-09 10:53:50
我有以下代碼來設(shè)置a的背景顏色TableRow,column.setCellFactory((TableColumn<Model, Integer> p) -> {           ComboBoxTableCell cell = new ComboBoxTableCell(FXCollections.observableArrayList(0, 1)) {               @Override               public void updateItem(Object item, boolean empty) {                   super.updateItem(item, empty);                   if (!empty && item != null) {                       if(Integer.valueOf(item.toString()) == 1){                           getTableRow().setStyle("-fx-background-color: khaki;");                       }else if(Integer.valueOf(item.toString()) == 0){                           getTableRow().setStyle(null);                       }                   }               }           };           return cell;        });問題是當(dāng)我選擇背景設(shè)置為某種顏色的行時,指示選擇的默認(rèn)藍(lán)色會落后。(如下所示)如何保留默認(rèn)選擇顏色?
查看完整描述

1 回答

?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗 獲得超8個贊

內(nèi)聯(lián)樣式比CSS樣式表具有更高的優(yōu)先級。因此,所選行的背景也將被覆蓋。構(gòu)造背景的方式要求您使用“指定”-fx-control-inner-background-alt和“-fx-control-inner-background代替”。


[...].setStyle("-fx-control-inner-background: khaki; -fx-control-inner-background-alt: khaki;")

但是,存在一個更嚴(yán)重的問題:


您可以從設(shè)置樣式TableCell。由于TableView負(fù)責(zé)將項目分配給單元格,因此,如果您在不同的列中使用單元格類型,則完成的順序是實現(xiàn)細(xì)節(jié),會導(dǎo)致任意結(jié)果。即使僅在一列中使用這些單元格,也永遠(yuǎn)不會處理單元格為空的情況,因此即使是空單元格也可能仍包含新顏色。


行樣式屬于表行。


如果您使用PseudoClass和CSS樣式表,那么您還將獲得最大的靈活性。


例如


final PseudoClass one = PseudoClass.getPseudoClass("one");

tableView.setRowFactory(t -> new TableRow<Model>() {


    private ChangeListener<Integer> listener = (o, oldValue, newValue) -> {

        pseudoClassStateChanged(one, newValue == 1);

    };


    @Override

    protected void updateItem(Model model, boolean empty) {

        if (getItem() != null) {

            getItem().myValueProperty().removeListener(listener);

        }


        super(model, empty);


        if (empty || model == null) {

            listener.changed(null, 0, -1);

        } else {

            model.myValueProperty().addListener(listener);

            listener.changed(null, 0, model.getMyValue());

        }

    }



});

CSS樣式表


.table-row-cell:one {

    -fx-control-inner-background: khaki;

    -fx-control-inner-background-alt: khaki;

}

此外,你應(yīng)該使用類型參數(shù),以避免轉(zhuǎn)換到您的項目Integer,以String和回Integer(這應(yīng)該由一個投來代替,如果它需要做這樣的。在這種情況下,最好不要使用原始類型)。


final ObservableList<Integer> values = FXCollections.observableArrayList(0, 1);


column.setCellFactory((TableColumn<Model, Integer> p) -> {

    ComboBoxTableCell<Model, Integer> cell = new ComboBoxTableCell<Model, Integer>(values) {

        @Override

        protected void updateItem(Integer item, boolean empty) {

            ...

        }

    };

    return cell;

});


查看完整回答
反對 回復(fù) 2021-04-28
  • 1 回答
  • 0 關(guān)注
  • 701 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號