我在设置TableView样式时遇到问题,因为当我使用TableView打开新窗口时,它的外观如下图所示:
我不知道是什么原因造成的。当我单击表中的另一行时,它消失了:
我还附上我的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列调整大小策略也是受限制的调整大小,也许会引起它吗?但是,当它不受约束地调整大小时,它看起来会更糟,这是因为附加的“空”列如下所示:
任何提示如何在窗口加载时摆脱它?
答案 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;
}