2017-09-07 20 views
0

JavaFX libを使用してデータを表示する際に問題があります。 私の問題の説明: Stringのリストを表示する必要があり、すべてのリストの要素数が異なります。JavaFX listview cell growing

私が発明したのは、すべてのリストのリストビューを作成することでした。 しかし、私は示すに問題があります。たとえば、 を:私はString年代とリストビューを持っている - そしてそれのための簡単なコード以下:

 ListView<String> lst = new ListView<>(); 
    ObservableList<String> observableList = FXCollections.observableArrayList("Hello", "Hello -2"); 
    lst.setItems(observableList); 
    lst.setPrefHeight(100); 
    lst.setOrientation(Orientation.HORIZONTAL); 

    Scene scene = new Scene(new VBox(lst)); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

を、私はそれを実行したときに - 私のような何かを参照してください。ListView

をしかし、私はリストビュー内の要素が表示されているスペースでいっぱいにしたい、私はこのストライプスペースを右側には望んでいません。 私の仕事では、要素の数が違う別のリストがあります。

あなたが私を助けたり、私の考えを得ることができれば - それはどのようにすべきか - それは素晴らしいことでしょう!

Thanx!

答えて

1

私は、これはあなたが探している解決策だと思う:

public class TestController { 

    @FXML 
    private ListView<String> listView; 

    @FXML 
    public void initialize() { 
     ObservableList<String> observableList = FXCollections.observableArrayList("Hello", "Hello -2", "More", "Item"); 
     listView.setItems(observableList); 
     listView.setPrefHeight(100); 
     Platform.runLater(() -> System.out.println(listView.getWidth())); 
     listView.setOrientation(Orientation.HORIZONTAL); 
     listView.setCellFactory(param -> new CustomListCell()); 
    } 


    private class CustomListCell extends ListCell<String> { 

     CustomListCell() { 
      // If you want to use as a separate class you can use the getListView() instead of listView. 
      prefWidthProperty().bind(listView.widthProperty() 
        .divide(listView.getItems().size()) // set the width equally for each cell 
        .subtract(1)); // subtracted 1 to prevent displaying of a scrollBar, but you can play with 
             // this if you have many values in the listView 
     } 

     @Override 
     protected void updateItem(String item, boolean empty) { 
      super.updateItem(item, empty); 
      if (empty) { 
       setText(null); 
      } else { 
       setText(item); 
      } 
     } 

    } 

} 
+0

うん、それはそれです!どうもありがとうございました! – aarexer

関連する問題