2013-04-12 74 views

回答

4

這是一個有點棘手,但它是可能的:

的JavaFX 2.2,這是犯了這樣的:

ProgressIndicator indicator = new ProgressIndicator(); 
ProgressIndicatorSkin indicatorSkin = new ProgressIndicatorSkin(indicator); 
final Text text = (Text) indicatorSkin.lookup(".percentage"); 
indicator.progressProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> ov, Number t, Number newValue) { 
     // If progress is 100% then show Text 
     if (newValue.doubleValue() >= 1) { 
      // This text replaces "Done" 
      text.setText("Foo"); 
     } 
    } 
}); 
indicator.skinProperty().set(indicatorSkin); 
indicator.setProgress(1); 


JavaFX的8之前,你必須先調用applyCss()做一個查找,您不再需要皮膚:

ProgressIndicator indicator = new ProgressIndicator(); 
indicator.progressProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> ov, Number t, Number newValue) { 
     // If progress is 100% then show Text 
     if (newValue.doubleValue() >= 1) { 
      // Apply CSS so you can lookup the text 
      indicator.applyCss(); 
      Text text = (Text) indicator.lookup(".text.percentage"); 
      // This text replaces "Done" 
      text.setText("Foo"); 
     } 
    } 
}); 
indicator.setProgress(1); 

將文本「Foo」更改爲完成的文本,然後準備就緒

我測試過這段代碼,它應該可以正常工作。 ;-)

+0

謝謝你,你幫我:-) –

+0

@Kalashchni此代碼似乎不工作了(?)。我的意思是我使用的是最新的了JavaFx 8和ProgressIndicatorSkin沒有查找() - 方法?無論如何克服這一點?謝謝。 – user2499946

+0

嗯,我剛剛注意到在ProgressIndicatorSkin類中有一個私有字段「doneText」,我可以通過一點反射來訪問它。 – user2499946