2017-10-06 12 views
0
ListView<ChatModel> listView; 
ObservableList<ChatModel> items = FXCollections.observableArrayList(); 

private final Image IMAGE_MEN = new Image("men.png"); 
private final Image IMAGE_WOMEN = new Image("women.png"); 

private Image[] listOfImages = {IMAGE_MEN, IMAGE_WOMEN}; 

listView = new ListView<ChatModel>(); 
     listView.setPrefHeight(550); 
     listView.setItems(items); 

     listView.setCellFactory(param -> new ListCell<ChatModel>() { 
      private ImageView imageView = new ImageView(); 

      @Override 
      public void updateItem(ChatModel name, boolean empty) { 
       super.updateItem(name, empty); 
       if (empty) { 
        setText(null); 
        setGraphic(null); 
       } else { 
        if (name.getClientName().equals("testing")) 
         imageView.setImage(listOfImages[0]); 
        else if (name.getClientName().equals("testing1")) 
         imageView.setImage(listOfImages[1]); 
        setText(name.getClientMessage()); 
        setGraphic(imageView); 
       } 
      } 
     }); 

私は上記のコードを使用して画像とテキストを使用してリストビューに項目を追加していますが、リストビューのデザインは左にありますすべての行で私は、交互の行に異なるデザインが必要であるという要件を持っています。次の行には、右側の要素が必要です。ここで リストビュー内の左右の画像とテキストJavaFX

は私が私が左右で交互に行をしたい今

image of list view

まで達成してきたようなデザインです。

どのように私はこれを達成することができます教えてください。

答えて

2

あなたはCSSでそれを達成することができます:

.list-view .list-cell:odd { 
    -fx-content-display:left; 
} 

.list-view .list-cell:even { 
    -fx-content-display:right; 
} 

セレクタはListCellの疑似状態に基づいて-fx-content-displayプロパティを設定します。

  • odd:テキスト左 - グラフィック右

  • even:grahic left-text right

+0

どうすれば設定できますか?私はlistView.getStylesheets()を試した。add( "list-view");それは動作しませんでした –

+0

[チュートリアル](http://docs.oracle.com/javafx/2/css_tutorial/jfxpub-css_tutorial.htm)のセクション「スタイルシートの作成」を参照してください。例えば。あなたがあなたの 'Application'ソースの隣に' app.css'を持っていれば、あなたは '' scene.getStylesheets()。add(getClass()。getResource( "app.css")。toString()); – DVarga

+0

scene.getStylesheets()。add( "ChatStyle.css"); &listView.getStyleClass()。add( "list-view");私は試しましたが、私のために働いていません –

関連する問題