Skip to content

Instantly share code, notes, and snippets.

@timyates
Created March 24, 2014 16:00
Show Gist options
  • Save timyates/fd6904dcca366d50729c to your computer and use it in GitHub Desktop.
Save timyates/fd6904dcca366d50729c to your computer and use it in GitHub Desktop.
package sample;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TextArea;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import rx.subjects.BehaviorSubject;
import static java.util.concurrent.TimeUnit.*;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
TextArea textArea = new TextArea();
WebView webView = new WebView();
WebEngine engine = webView.getEngine();
BehaviorSubject<String> textSubject = BehaviorSubject.create( "" ) ;
textArea.textProperty().addListener( ( control, oldValue, newValue ) -> textSubject.onNext( newValue ) ) ;
textSubject.sample( 500, MILLISECONDS )
.distinctUntilChanged()
.subscribe( ( s ) -> Platform.runLater( () -> engine.loadContent( s ) ) ) ;
SplitPane root = new SplitPane();
root.getItems().addAll(textArea, webView);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
@guigarage
Copy link

I have written a short blogpost about this topic: http://www.guigarage.com/2014/03/reactive-programming-javafx/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment