如何使JavaFX TableView中的网格线保持清晰?

如何使JavaFX TableView中的网格线保持清晰?,java,javafx,javafx-2,javafx-8,Java,Javafx,Javafx 2,Javafx 8,下面的代码创建了一个TableView,其中有足够的列需要一个水平滚动条 最初,TableView中的网格线的宽度为一个像素,因此是锐利的 滚动到TableView的最右边,突然网格线有两个像素的宽度,一个比另一个轻 这会使栅格线看起来模糊 这可能是因为JavaFX认为网格线在滚动后处于小数点,而不是在像素上,因此网格线与周围环境混合 我如何告诉JavaFX不要这样做 我是否可以更改滚动条,使其仅选择精确的像素边界 谢谢 在下面的代码中,我使用css将网格线颜色更改为红色,使其变得明显,但是如果

下面的代码创建了一个TableView,其中有足够的列需要一个水平滚动条

最初,TableView中的网格线的宽度为一个像素,因此是锐利的

滚动到TableView的最右边,突然网格线有两个像素的宽度,一个比另一个轻

这会使栅格线看起来模糊

这可能是因为JavaFX认为网格线在滚动后处于小数点,而不是在像素上,因此网格线与周围环境混合

我如何告诉JavaFX不要这样做

我是否可以更改滚动条,使其仅选择精确的像素边界

谢谢

在下面的代码中,我使用css将网格线颜色更改为红色,使其变得明显,但是如果使用默认颜色,则会出现相同的问题

import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TableTest4 extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        BorderPane borderPane = new BorderPane();
        Scene scene = new Scene(borderPane, 500, 500);
        String cssFile = getClass().getResource("tabletest4.css").toExternalForm();
        scene.getStylesheets().add(cssFile);
        stage.setScene(scene);

        TableView<Integer> table = new TableView<>();

        ObservableList<Integer> data = FXCollections.observableArrayList();
        for (int i = 0; i < 20; i++) {
            data.add(i);
        }
        table.setItems(data);

        for (int i = 0; i < 20; i++) {
            String text = "";
            if (i % 2 == 0) {
                text = "sdfd";
            } else if (i % 3 == 0) {
                text = "dghg hghj";
            } else if (i == 17) {
                text = "This Hopppsdssss";
            }
            TableColumn<Integer,String> column = new TableColumn<>(Integer.toString(i) + " " + text);
            column.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(param.getValue().toString()));
            table.getColumns().add(column);
        }

        borderPane.setCenter(table);
        stage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

好的,看起来仅仅使用css是不可能的,所以我输入了一个bug报告,应该由8u40修复

.table-view{
    -fx-table-cell-border-color: red;
}