2016-08-10 6 views
3

Я работаю над приложением JavaFX через SceneBuilder, и я пытаюсь работать с добавлением функциональности в TableView. Моя текущая задача - позволить пользователю перетаскивать и увеличивать высоту каждого TableRow при перетаскивании. По сути, я пытаюсь заставить его работать как Excel.Увеличение высоты TableRow при перетаскивании

Java Code

tv.setRowFactory(t -> { 

     TableRow tr = new TableRow(); 
     tr.setPrefHeight(54); 

     tr.setOnMouseDragged(event -> { 
      tr.setMinHeight(event.getY()); 
     }); 

     return tr; 

    }); 

Я тестировал функцию GetY() на сопротивление и увидел, что итеративно растет, как я съехал на экране.

Я пробовал искать способ сделать это, но я не мог найти никаких ссылок на это. Если у вас есть ссылка на какую-либо документацию о необходимых методах, это тоже будет здорово.

Кроме того, если SceneBuilder имеет встроенный способ использования этой функции в TableView, это также может работать.

+0

Вы посетили FX документы Oracle's Java? https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableRow.html – LychmanIT

+0

Я действительно видел это. Существует проверка на isResizable, но для элемента управления не существует функции setResizable. –

+0

Проверьте метод «изменить размер». Разве ты не идешь? – LychmanIT

ответ

2

Попробуйте следующее:

table.setRowFactory(t -> { 
      final TableRow tr = new TableRow(); 
      final double prefHeight = 54; 
      tr.setPrefHeight(prefHeight); 

      tr.setOnMouseDragged(event -> { 
       final double newHeight = event.getY(); 
       if(newHeight < prefHeight) { 
        return; 
       } 
       tr.setPrefHeight(newHeight); 
       tr.autosize(); 
      }); 

      return tr; 

     }); 
+0

Работает идеально. Благодаря! –

+0

Рад, что это помогло. Ура! –

Смежные вопросы