2014-09-13 5 views
0

Я пытаюсь отобразить значки (которые упоминаются просто по их пути) в TableView, который имеет x-количество столбцов и любое количество ячеек, которые необходимы для отображения всех значков.TableView и данные списка

План должен был отображать значки таким образом, чтобы TableView действовал как «многослойный» ListView .. так, чтобы они шли слева направо.

Это первый раз, когда я использую управление TableView, и я немного смущен тем, как этого добиться.

Спасибо за любые указатели.

+0

отображаются все иконки в только один ряд (несколько столбцов)? или есть один значок в строке? – ItachiUchiha

+0

@ItachiUchiha Ну, честно говоря, я не уверен в реализации сам, я новичок, когда дело доходит до TableView! Просто у меня более 2000 значков, и ListView был недостаточно практичен, чтобы отображать их. Поэтому теперь я пытаюсь отобразить их в TableView, который имеет видимую ширину «8 значков» и высоту «5 значков», , Это фиксировано, и все значки имеют одинаковый размер. Мне не нужно динамическое изменение размера. Но я не могу понять, как выложить их в структуру стола. С помощью просто setItems() просто устанавливает значки для ВСЕХ 8 столбцов (дублируется). – user2499946

+0

Почему у вас есть 8 столбцов в TableView? Считаете ли вы использование [Pagination] (http://docs.oracle.com/javafx/2/ui_controls/pagination.htm) в ListView? – ItachiUchiha

ответ

0

Итак, как предложил Итачиучи, я закончил использование элемента управления Pagination с помощью GridPane, и он работает очень хорошо.

Вот код, если кто-нибудь натыкается на одно и то же ..

List<String> allEntries = Icons.getAllEntries(); 
    int numCols = 8; 
    int numRows = 5; 
    int numPages = allEntries.size()/(numCols * numRows); 
    Pagination pagination = new Pagination(numPages); 
    Collections.sort(allEntries); 
    pagination.setPageFactory(pageIndex -> { 
     GridPane layout = new GridPane(); 
     for (int y = 0; y < numRows; y++) { 
      for (int x = 0; x < numCols; x++) { 
       int index = numCols * y + x + (pageIndex * numCols * numRows); 
       String path = allEntries.get(index); 
       Image image = new Image(path, true); 
       ImageView imageView = new ImageView(image); 
       imageView.setFitWidth(64); 
       imageView.setFitHeight(64); 
       layout.add(imageView, x, y); 
       imageView.setOnMousePressed(e -> { 
        // Do stuff 
       }); 
      } 
     } 
     return layout; 
    }); 
Смежные вопросы