2012-06-06 33 views
6

Vì vậy, tôi đã tìm thấy điều này tutorial về cách sử dụng API bản đồ google trong một ứng dụng JavaFX trên máy tính để bàn.Cách chuyển dữ liệu từ WebView sang bộ điều khiển và ngược lại trong JavaFX

Vấn đề là tôi không thể tìm ra cách tôi có thể truyền dữ liệu từ WebView (biến javascripts, jsons ..) sang bộ điều khiển và ngược lại.

Tôi muốn tạo một trường văn bản trên textinput để tìm kiếm tự động hóa địa chỉ và thêm điểm đánh dấu ở đó (và ngược lại khi tôi di chuyển điểm đánh dấu để điền dữ liệu vào). Các độc javascript là không có vấn đề đối với tôi, nhưng tôi không biết làm thế nào để gọi javascript chức năng từ JavaFX điều khiển hoặc làm thế nào để gửi lại các biến từ javascript (kinh độ, vĩ độ, vv)

Trả lời

8

Xem JavaFX WebView tutorial phần:

  • Javascript Processing Commands
  • làm upcalls từ hoạt Javascript để JavaFX

Hãy chắc chắn rằng bạn sử dụng JavaFX 2.1 + khi làm điều này, như JavaFX 2.0 không có hỗ trợ đầy đủ cho upcalls từ javaScript sang JavaFX.


Cách gọi hàm javascript từ bộ điều khiển JavaFX?

mã Java được thực hiện sau khi các tài liệu đã nạp:

webView.getEngine().executeScript("<write your javascript here>"); 

Làm thế nào để gửi lại các biến từ javascript (kinh độ, vĩ độ, vv)?

Đây là mẫu truyền thông chung, thay thế nó bằng logic Java và JavaScript thực tế bạn muốn thực thi.

mã Java:

// Add a Java callback object to a WebEngine document once it has loaded. 
webEngine.getLoadWorker().stateProperty().addListener(
    new ChangeListener<State>() { 
    @Override public void changed(ObservableValue<? extends State> ov, State oldState, State newState) { 
     if (newState == State.SUCCEEDED) { 
     JSObject win = (JSObject) webEngine.executeScript("window"); 
     win.setMember("app", new JavaApp()); 
     } 
    } 
    }); 
} 
... 
// JavaScript interface object 
private class JavaApp { 
    public void exit() { 
    Platform.exit(); 
    } 
} 

mã JavaScript (trong trường hợp này được nhúng trong một handler onclick cho a href html):

<a href="about:blank" onclick="app.exit()">Exit the Application</a> 
+1

Cảm ơn. câu trả lời chính xác. –

Các vấn đề liên quan