行和滚动条之间的JavaFX TableView矩形

时间:2018-08-20 11:45:03

标签: javafx

我在设置TableView样式时遇到问题,因为当我使用TableView打开新窗口时,它的外观如下图所示:

enter image description here

我不知道是什么原因造成的。当我单击表中的另一行时,它消失了:

enter image description here

我还附上我的CSS以供查看以下表格:

.table-view{
    -fx-background-color: -fx-color-navyBlue;
}

.table-view .filler{
    -fx-background-color: -fx-color-navyBlue;
}

.table-view:focused{
    -fx-background-color: -fx-color-navyBlue;
}

.table-view .column-header-background{
    -fx-background-color: -fx-color-navyBlue;
    -fx-border-color: -fx-color-navyBlue;
}

.table-view .column-header-background .label{
    -fx-background-color: -fx-color-darkGray;
    -fx-text-fill: -fx-color-orange;
}

.table-view .column-header {
    -fx-background-color: -fx-color-darkGray;
    -fx-border-width: 2;
    -fx-border-color: -fx-color-navyBlue;
}

.table-view .table-cell{
    -fx-text-fill: -fx-color-lightGray;
    -fx-alignment: center;
    -fx-border-width: 2;
    -fx-border-color: -fx-color-navyBlue;
}

.table-view .table-row-cell{
    -fx-background-color: -fx-color-navyBlue, -fx-color-darkGray;
    -fx-table-cell-border-color: -fx-color-navyBlue;
}

.table-view .table-row-cell:selected * {
    -fx-background-color: -fx-color-orange;
    -fx-text-fill: -fx-color-navyBlue;
}

我的TableView列调整大小策略也是受限制的调整大小,也许会引起它吗?但是,当它不受约束地调整大小时,它看起来会更糟,这是因为附加的“空”列如下所示:

enter image description here

任何提示如何在窗口加载时摆脱它?

1 个答案:

答案 0 :(得分:0)

我做了我能使它可运行的工作,所以CSS看起来不太好,因为我使用的是问题中的那个,但必须进行一些编辑才能使其工作。如果您取消注释第一行,它将摆脱第三列,我知道您说过将其设置为调整大小。如果您进行此修改,则无法复制您遇到的问题,因此您可以将其发布并发布,否则我可以为您提供帮助可能不是,我不会检查您在table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);中设置的位置,如果在fxml中执行此操作,请确保其正确执行,也尝试在初始化时设置它,看看是否可以解决问题

public class Main extends Application {

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

    @Override
    public void start(Stage stage) {
        ObservableList<Person> data = FXCollections.observableArrayList(new Person("First", "Last"));

        TableColumn firstNameCol = new TableColumn("First Name");
        firstNameCol.setMinWidth(100);
        firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));

        TableColumn lastNameCol = new TableColumn("Last Name");
        lastNameCol.setMinWidth(100);
        lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));

        TableView<Person> table = new TableView<>();
        table.setItems(data);
        table.getColumns().addAll(firstNameCol, lastNameCol);
        //table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

        Button addButton = new Button("Add");
        addButton.setOnAction(event -> data.add(new Person("First","Last")));

        VBox vbox = new VBox();
        vbox.getChildren().addAll(table, addButton);

        Scene scene = new Scene(new Group(vbox));
        scene.getStylesheets().add(String.valueOf(getClass().getClassLoader().getResource("tableview.css")));

        stage.setScene(scene);
        stage.show();
    }

    public static class Person {

        private final SimpleStringProperty firstName;
        private final SimpleStringProperty lastName;

        private Person(String fName, String lName) {
            this.firstName = new SimpleStringProperty(fName);
            this.lastName = new SimpleStringProperty(lName);
        }

        public String getFirstName() { return firstName.get(); }

        public void setFirstName(String fName) { firstName.set(fName); }

        public String getLastName() { return lastName.get(); }

        public void setLastName(String fName) { lastName.set(fName); }
    }
}

tableview.css

.table-view{
    -fx-background-color: navy;
}

.table-view .filler{
    -fx-background-color:  navy;
}

.table-view:focused{
    -fx-background-color:  navy;
}

.table-view .column-header-background{
    -fx-background-color:  navy;
    -fx-border-color:  navy;
}

.table-view .column-header-background .label{
    -fx-background-color:  darkGray;
    -fx-text-fill:  orange;
}

.table-view .column-header {
    -fx-background-color:  darkGray;
    -fx-border-width: 2;
    -fx-border-color:  navy;
}

.table-view .table-cell {
    -fx-text-fill:  lightGray;
    -fx-alignment: center;
    -fx-border-width: 2;
    -fx-border-color:  navy;
}


.table-view .table-row-cell{
    -fx-background-color:  navy,  darkGray;
    -fx-table-cell-border-color:  navy;
}

.table-view .table-row-cell:selected * {
    -fx-background-color:  orange;
    -fx-text-fill:  navy;
}