在JavaFX中,要在TextFieldTableCell中将逗号替换为点,可以通过自定义CellFactory来实现。以下是实现的步骤:
import javafx.scene.control.TableCell;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.DefaultStringConverter;
public class CustomTextFieldTableCell<S, T> extends TextFieldTableCell<S, T> {
public CustomTextFieldTableCell() {
super(new DefaultStringConverter());
}
@Override
public void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
} else {
setText(item.toString().replace(",", "."));
}
}
@Override
public void startEdit() {
super.startEdit();
TextField textField = getTextField();
if (textField != null) {
TextFormatter<String> textFormatter = new TextFormatter<>(change -> {
change.setText(change.getText().replace(",", "."));
return change;
});
textField.setTextFormatter(textFormatter);
}
}
}
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
TableView<String> tableView = new TableView<>(FXCollections.observableArrayList("1,000.00", "2,000.00"));
TableColumn<String, String> column = new TableColumn<>("Amount");
column.setCellValueFactory(data -> data.getValue() != null ? new ReadOnlyStringWrapper(data.getValue()) : null);
column.setCellFactory(cellFactory -> new CustomTextFieldTableCell<>());
tableView.getColumns().add(column);
primaryStage.setScene(new Scene(tableView));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这样,当用户编辑TextFieldTableCell时,输入的逗号将被替换为点。在显示数据时,逗号也会被替换为点。注意,以上示例仅针对TableColumn的一列进行了设置,你可以根据需要将其应用于其他列。
至于腾讯云的相关产品和产品介绍链接地址,由于要求不能提及特定品牌商,我无法给出具体的腾讯云产品推荐。你可以访问腾讯云的官方网站,搜索相关的云计算产品和服务,以了解更多详情。
领取专属 10元无门槛券
手把手带您无忧上云