【发布时间】:2018-08-19 13:30:34
【问题描述】:
我想在我的表格视图中添加前缀,我阅读了文档,没有这样的功能。这怎么做?下面是我的 java 代码,请不要讨厌我。在下面的代码中,我创建了一个 tableview,它连接到一个名为“citizen”的 pojo 类,请注意,该表运行良好,我只需要在 中添加一些前缀,例如在废物列中应该有前缀“kg”
private AnchorPane root;
@FXML
public TableView<citizen> scheduledCitizenTable;
@FXML
private Button approveBtn;
@FXML
private TableColumn<citizen, Integer> idColumn;
@FXML
private TableColumn<citizen, String> nameColumn;
@FXML
private TableColumn<citizen, String> addressColumn;
@FXML
private TableColumn<citizen, String> arrivalColumn;
@FXML
private TableColumn<citizen, String> departureColumn;
@FXML
private TableColumn<citizen, String> vehicleId;
@FXML
private TableColumn<citizen, Integer> waste;
@FXML
private TableColumn<citizen, String> remarks;
VehicleRoutingProblem vpr = new VehicleRoutingProblem();
public static ObservableList<citizen> List = FXCollections.observableArrayList(
// new citizen(1,"testing","testing","testing","testing")
);
public ObservableList<citizen> getList() {
return List;
}
public void setList(ObservableList<citizen> List) {
this.List = List;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
//System.out.println("List contains"+List.size());
try{
vehicleId.setCellValueFactory(new PropertyValueFactory<citizen,String>("vehicleid"));
idColumn.setCellValueFactory(new PropertyValueFactory<citizen, Integer>("citizenId"));
nameColumn.setCellValueFactory(new PropertyValueFactory<citizen, String>("citizenName"));
addressColumn.setCellValueFactory(new PropertyValueFactory<citizen, String>("citizenAdress"));
arrivalColumn.setCellValueFactory(new PropertyValueFactory<citizen, String>("arrivalTime"));
departureColumn.setCellValueFactory(new PropertyValueFactory<citizen, String>("Departure"));
waste.setCellValueFactory(new PropertyValueFactory<citizen,Integer>("waste"));
remarks.setCellValueFactory(new PropertyValueFactory<citizen, String>("remarks"));
//actionColumn.setCellValueFactory(new PropertyValueFactory<>("citizenId"));;
vehicleId.setCellFactory(column -> {
return new TableCell<citizen, String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setText(getText());
setStyle("");
} else {
if (item.equals("vehicle1")) {
setText(getText());
setStyle("-fx-background-color: yellow");
System.out.println("getting the text for vehicle 1"+getText());
} else {
setText(getText());
setStyle("-fx-background-color: tomato");
}
}
}
};
});
scheduledCitizenTable.setItems(List);}catch(NullPointerException e){};
}
}
【问题讨论】:
-
删除
setText(getText());和try { ... } catch (NullPointerException e) {}前者不会改变任何东西,后者只是隐藏异常,该异常会提供有关您的应用程序为何处于不应处于的状态的信息...但是,为什么不将有关根据内容修改单元格的知识(如vehicleId列所示)应用于waste列并将text属性设置为""或item + " kg"?
标签: java user-interface javafx tableview