<div dir="ltr"><div>Hi,</div><div>
<p>I am encountering an issue with vertical scroll bar visibility when I set the height of a <code>TableView</code> to some fixed height. The vertical scroll bar is always visible.</p>
<p>I am trying to give enough space(height) so that the vertical scroll 
bar is not visible, but looks like this only works after some 
considerable value..(I mean around 14px or 15px). So assuming this might
 be an issue in <code>VirtualFlow</code>, I tested it on <code>ListView</code> and <code>TreeView</code>. And as expected, I can notice the same issue in those controls as well.</p>
<p>In the attached picture, you can clearly see that there is enough space 
in viewport, and I am not expecting a vertical scroll bar. The strange 
part is that the vertical scroll bar appears with no active 
implementation, I mean I cannot move the bar thumb.</p><p></p><img src="cid:ii_m1rltdoo0" alt="EhfxKJZP.png" width="502" height="382"><br></div><div>
<p><strong>Note that this issue is very specific only if I fix the height of control.</strong> Things work as usual if the control is resized dynamically.</p>
<p>Another finding is that, <strong>this issue occurs only if the horizontal scroll bar is also visible</strong>.</p>
<p><em>Tested this on latest version of JavaFX (FX23 build 29</em></p>

</div><div>I am trying to raise a ticket in the bug report. but it is not allowing me to submit.</div><div><br></div><div>Can some one of you raise the ticket ?</div><div><br></div><div>Below is the demo code:</div><div>
<pre class="gmail-lang-java gmail-s-code-block"><code class="gmail-hljs gmail-language-java"><span class="gmail-hljs-keyword">import</span> javafx.application.Application;
<span class="gmail-hljs-keyword">import</span> javafx.beans.property.ReadOnlyObjectWrapper;
<span class="gmail-hljs-keyword">import</span> javafx.geometry.Insets;
<span class="gmail-hljs-keyword">import</span> javafx.scene.Scene;
<span class="gmail-hljs-keyword">import</span> javafx.scene.control.*;
<span class="gmail-hljs-keyword">import</span> javafx.scene.layout.*;
<span class="gmail-hljs-keyword">import</span> javafx.stage.Stage;

<span class="gmail-hljs-keyword">import</span> java.util.ArrayList;
<span class="gmail-hljs-keyword">import</span> java.util.List;

<span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">class</span> <span class="gmail-hljs-title gmail-class_">VerticalScrollBarVisibilityIssueDemo</span> <span class="gmail-hljs-keyword">extends</span> <span class="gmail-hljs-title gmail-class_">Application</span> {

    <span class="gmail-hljs-type">String</span> <span class="gmail-hljs-variable">CSS</span> <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-string">"data:text/css,"</span>+
            <span class="gmail-hljs-string">"""
                    .list-cell:odd {
                        -fx-background: #AEAEAE;
                    }
                    .table-row-cell:odd {
                        -fx-background: #AEAEAE;
                    }
                    """</span>;
    <span class="gmail-hljs-meta">@Override</span>
    <span class="gmail-hljs-keyword">public</span> <span class="gmail-hljs-keyword">void</span> <span class="gmail-hljs-title gmail-function_">start</span><span class="gmail-hljs-params">(<span class="gmail-hljs-keyword">final</span> Stage stage)</span> <span class="gmail-hljs-keyword">throws</span> Exception {
        <span class="gmail-hljs-keyword">final</span> <span class="gmail-hljs-type">VBox</span> <span class="gmail-hljs-variable">root</span> <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">VBox</span>();
        root.setSpacing(<span class="gmail-hljs-number">10</span>);
        root.setPadding(<span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">Insets</span>(<span class="gmail-hljs-number">10</span>));
        <span class="gmail-hljs-keyword">final</span> <span class="gmail-hljs-type">Scene</span> <span class="gmail-hljs-variable">scene</span> <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">Scene</span>(root, <span class="gmail-hljs-number">500</span>, <span class="gmail-hljs-number">350</span>);
        scene.getStylesheets().add(CSS);
        stage.setScene(scene);
        stage.setTitle(<span class="gmail-hljs-string">"Vertical ScrollBar Visibility Issue "</span> + System.getProperty(<span class="gmail-hljs-string">"javafx.runtime.version"</span>));
        stage.show();

        loadRoot(root);
    }

    <span class="gmail-hljs-keyword">private</span> <span class="gmail-hljs-keyword">void</span> <span class="gmail-hljs-title gmail-function_">loadRoot</span><span class="gmail-hljs-params">(VBox root)</span> {
        TableView<List<String>> tableView = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TableView</span><>();
        tableView.setMaxHeight(<span class="gmail-hljs-number">120</span>);
        VBox.setVgrow(tableView,Priority.ALWAYS);
        <span class="gmail-hljs-type">int</span> <span class="gmail-hljs-variable">colCount</span> <span class="gmail-hljs-operator">=</span> <span class="gmail-hljs-number">10</span>;
        <span class="gmail-hljs-keyword">for</span>(<span class="gmail-hljs-type">int</span> <span class="gmail-hljs-variable">i</span> <span class="gmail-hljs-operator">=</span><span class="gmail-hljs-number">0</span>;i<colCount;i++){
            <span class="gmail-hljs-keyword">final</span> <span class="gmail-hljs-type">int</span> <span class="gmail-hljs-variable">index</span> <span class="gmail-hljs-operator">=</span> i;
            TableColumn<List<String>, String> column = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TableColumn</span><>(<span class="gmail-hljs-string">"Option "</span>+i);
            column.setCellValueFactory(param -> <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">ReadOnlyObjectWrapper</span><>(param.getValue().get(index)));
            tableView.getColumns().add(column);
        }
        <span class="gmail-hljs-keyword">for</span>(<span class="gmail-hljs-type">int</span> j=<span class="gmail-hljs-number">0</span>;j<<span class="gmail-hljs-number">3</span>;j++){
            List<String> row = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">ArrayList</span><>();
            <span class="gmail-hljs-keyword">for</span>(<span class="gmail-hljs-type">int</span> <span class="gmail-hljs-variable">i</span> <span class="gmail-hljs-operator">=</span><span class="gmail-hljs-number">0</span>;i<colCount;i++){
                row.add(<span class="gmail-hljs-string">"Row"</span>+j+<span class="gmail-hljs-string">"-Opt"</span>+i);
            }
            tableView.getItems().add(row);
        }

        ListView<String> listView = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">ListView</span><>();
        VBox.setVgrow(listView,Priority.ALWAYS);
        listView.setMaxWidth(<span class="gmail-hljs-number">200</span>);
        listView.setMaxHeight(<span class="gmail-hljs-number">92</span>);
        listView.getItems().addAll(<span class="gmail-hljs-string">"Option 1 Big Text TestingOption 1 Big Text Testing"</span>, <span class="gmail-hljs-string">"Option 2"</span>,<span class="gmail-hljs-string">"Option 3"</span>);

        TreeView<String> treeView = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeView</span><>();
        VBox.setVgrow(treeView,Priority.ALWAYS);
        treeView.setMaxWidth(<span class="gmail-hljs-number">200</span>);
        treeView.setMaxHeight(<span class="gmail-hljs-number">92</span>);
        TreeItem<String> rootItem = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeItem</span><>(<span class="gmail-hljs-string">"Root"</span>);
        TreeItem<String> item1 = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeItem</span><>(<span class="gmail-hljs-string">"Item 1"</span>);
        TreeItem<String> item1_1 = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeItem</span><>(<span class="gmail-hljs-string">"Item 1_1"</span>);
        item1.getChildren().add(item1_1);
        TreeItem<String> item2 = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeItem</span><>(<span class="gmail-hljs-string">"Item 2 Item 2 Item 2 Item 2 Item 2 "</span>);
        TreeItem<String> item3 = <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-title gmail-class_">TreeItem</span><>(<span class="gmail-hljs-string">"Item 3"</span>);
        rootItem.getChildren().addAll(item1, item2, item3);
        treeView.setRoot(rootItem);
        treeView.setShowRoot(<span class="gmail-hljs-literal">false</span>);

        root.getChildren().addAll(tableView,listView,treeView);
    }
}</code></pre>

</div><div><br>

</div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Regards,<br>Sai Pradeep Dandem.</div></div></div></div>