我目前正在使用带有标签的进度条(pb)在自定义单元工厂中显示%,但我喜欢实现ProgressIndicator(pi)以节省空间。
标准实施效果不佳 - 请参阅https://docs.oracle.com/javase/8/javafx/user-interface-tutorial/img/progress-samples.png
请参阅我今天使用的代码以供参考:
progressCln.setCellValueFactory( new PropertyValueFactory<>( "selected" ) );
progressCln.setCellFactory(column -> new TableCell<Segment, Boolean>() {
@Override
protected void updateItem(Boolean selected, boolean empty) {
super.updateItem(selected, empty);
Segment seg = (Segment) getTableRow().getItem();
if (empty || !selected) {
setGraphic(null);
setText(null);
if (seg!=null) seg.setProgress(0);
} else if (seg != null ) { // for some reasons, seg got null
StackPane sp = new StackPane();
Label lb = new Label();
ProgressBar bar = new ProgressBar();
sp.getChildren().addAll(lb, bar);
bar.progressProperty().unbind();
bar.progressProperty().bind(seg.progressBarProperty());
//show % only when uploading
lb.textProperty().bind(
new When (bar.progressProperty().greaterThan(0))
.then(bar.progressProperty().multiply(100).asString("%.0f%%"))
.otherwise(""));
lb.setGraphic(bar);
setGraphic(sp);
lb.setContentDisplay(ContentDisplay.CENTER);
lb.setStyle("-fx-font-weight: bold; -fx-font-size: 8pt;");
}
}
});
答案 0 :(得分:0)
您可以通过设置首选宽度和高度强制大小:
final ProgressIndicator指标=新的ProgressIndicator(); indicator.setPrefSize(50,50); 这样,指标在两种模式下保持相同的界限。
除了你展示的方式,我没有看到任何其他方式。您可以使用此处ProgressIndicator中记录的CSS类FragmentManager fragmentManager = getSupportFragmentManager();
AKDialogFragment newFragment = new AKDialogFragment();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.add(android.R.id.content, newFragment).addToBackStack(null).commit();
访问指标内的文本。但这只允许造型。布局由percentage
类(l.423)管理。
还要考虑将自定义进度指示器抽象为自己的小部件。