2017-04-19 158 views
-2

你好我目前正在建設使用javaFx的項目,並想知道是否有可能在運行時動態改變列表視圖對象單元格的顏色。列表視圖的每個單元格表示具有與其關聯的顏色的對象。我遇到的問題是每個對象都有一個在運行時生成的顏色,對象的數量不一定會保持不變。Javafx listview動態改變列表視圖單元格的顏色

javaFX代碼庫正在使用的底層GUI是fxml。我已經嘗試過使用CSS,但由於在運行時會生成與這些對象相關的對象和顏色的數量,所以我無法將其強制編碼到樣式表中。我也一直在尋找使用細胞工廠爲每個細胞創建所需的細胞,但是我需要將顏色傳遞到細胞工廠,並且必須採用RGB格式。有沒有人對這個問題有任何經驗?

的for(int i = 0;我< mice.mice.size();我++){

selectedMiceListView.setCellFactory(new Callback<ListView<Object>, 
ListCell<Object>>() { 

     // @Override 
         public ListCell<Object> call(final ListView<Object> param) { 
          final ListCell<Object> cell = new ListCell<Object>() { 

           @Override 
           protected void updateItem(final Object item, final boolean empty) { 
            super.updateItem(item, empty); 
             setStyle("-fx-background-color: rgb(" + mice.mice.get(i).red + "," + mice.mice.get(i).green + ", " + mice.mice.get(i).blue + ");"); 

           } 
          }; 
          return cell; 
         } 
        }); 
       } 

下面是我到目前爲止已經試過,它說,內部類必須具有有效的最後變量。有沒有辦法修改它,以便它接受我試圖設置它的rgb值?

+0

試着問一個具體問題,爲您提供迄今做了什麼。 SO不是一個編寫代碼的網站。 – Masoud

回答

0

試試這個,下面的代碼繪製在ListView每一個細胞都帶有黑色

this.listView 
    .setCellFactory(new Callback<ListView<Object>, ListCell<Object>>() { 

     @Override 
     public ListCell<Object> call(final ListView<Object> param) { 
     final ListCell<Object> cell = new ListCell<Object>() { 

      @Override 
      protected void updateItem(final Object item, final boolean empty) { 
      super.updateItem(item, empty); 
      setBackground(
       new Background(new BackgroundFill(Color.rgb(100, 150, 200), CornerRadii.EMPTY, Insets.EMPTY))); 

      } 
     }; 
     return cell; 
     } 
    }); 
+0

這可以修改,以便設置樣式方法可以採用不同的rgb值嗎? – user3624469

+0

@ user3624469請參閱更新 – Oswald

相關問題