欲處理標記,可使用Media類別的getMarkers()方法,getMarkers()方法回傳ObservableMap介面物件,其內容由字串與時間所組成,代表在特定「時間」處理指定的「標記字串」。其內容可由ObservableMap介面的put()方法依序加入。待標記處理完成之後,再以MediaPlayer類別的setOnMarker()方法處理。
請參考以下範例,示範在影像中附加標記字串。首先以Media類別的getMarkers()方法回傳ObservableMap介面物件,並以put()方法依序加入標記字串與時間:
final ObservableMap<String, Duration> markers = media.getMarkers(); markers.put("Marker 1", Duration.millis(3000)); markers.put("Marker 2", Duration.millis(6000)); markers.put("Marker 3", Duration.millis(9000)); markers.put("Marker 4", Duration.millis(12000)); markers.put("Marker 5", Duration.millis(15000)); |
接著以MediaPlayer類別的setOnMarker()方法處理標記字串:
final Label lblMarker = new Label(); lblMarker.setFont(Font.font("Verdana", 12)); lblMarker.setTextFill(Color.WHITE); StackPane.setAlignment(lblMarker, Pos.CENTER); mediaplayer.setOnMarker(new EventHandler<MediaMarkerEvent>() { @Override public void handle(final MediaMarkerEvent e) { Platform.runLater(new Runnable() { @Override public void run() { lblMarker.setText(e.getMarker().getKey()); } }); } }); ... StackPane stackpane = new StackPane(); stackpane.getChildren().addAll(borderpane, lblMarker); // Set the Layout Pane of Scene Scene scene = new Scene(stackpane); |
【執行結果】
【參考資料】
[1] 黃嘉輝,深入研究JavaFX 2。
[2] 黃嘉輝,深入研究Java Swing。
[3] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[4] JavaFX:http://www.oracle.com/technetwork/java/javafx
[5] JavaFX 2.2 API Specification.
[6] Java Platform, Standard Edition 7 API Specification.
© Chia-Hui Huang
沒有留言:
張貼留言