2016-08-10 7 views
3

私はSceneBuilder経由でJavaFXアプリケーションを開発しています。私はTableViewに機能を追加しようとしています。私の現在の仕事は、ドラッグで各TableRowの高さをドラッグして増加させることです。基本的には、Excelのように機能させようとしています。DragでTableRowの高さを増やす

Javaコード

tv.setRowFactory(t -> { 

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

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

     return tr; 

    }); 

私はドラッグ上のgetY()関数をテストし、私は、画面を下に移動すると、それが反復的に増加していたことがわかりました。

私はこれを行う方法を探してみましたが、私はこれに何かのリードを見つけることができませんでした。必要なメソッドについてのドキュメントへのリンクがある場合は、それも素晴らしいでしょう。

また、SceneBuilderにTableViewでこの機能を可能にする方法が組み込まれている場合は、同様に動作する可能性があります。

+0

あなたはOracle'sのJava FXのドキュメントを訪問しましたか? https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableRow.html – LychmanIT

+0

私はそれを見ました。 isResizableのチェックがありますが、コントロールのsetResizable関数はありません。 –

+0

'resize'メソッドをチェックしてください。あなたは冗談ではありませんか? – 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

喜んで助けました。乾杯! –

関連する問題