2012-09-22 9 views
10

क्या WebEngine लोड होने के बाद स्वचालित रूप से कोई कार्य चलाना संभव है? मुझे पता है कि WebEngine से लोडिंग प्रगति का संकेत देने के लिए Worker प्राप्त कर सकता है, लेकिन ऐसा लगता है कि Worker को बार-बार मतदान करना एक सुरुचिपूर्ण समाधान नहीं है (यानी पेज लोड तक प्रोग्राम लॉक करना)। मुझे पता है कि मैं इसे Task के साथ कर सकता हूं, तो क्या मुझे WebEngine किसी भी तरह से मिल सकता है, और पूर्ण आदेश पर निष्पादन जोड़ सकता है?वेबव्यू पूरी तरह लोड होने के बाद किसी कार्य को निष्पादित करें

उत्तर

15

नमूना WebView documentation के आधार पर:

webView.getEngine().getLoadWorker().stateProperty().addListener(
    new ChangeListener<Worker.State>() { 
    @Override 
    public void changed(
    ObservableValue<? extends Worker.State> observable, 
    Worker.State oldValue, Worker.State newValue) { 

    if(newValue != Worker.State.SUCCEEDED) { 
     return; 
    } 

    // Your logic here 
    } 
}); 

एक लैम्ब्डा अभिव्यक्ति के रूप में:

webView.getEngine().getLoadWorker().stateProperty().addListener(
    (ObservableValue<? extends Worker.State> observable, 
    Worker.State oldValue, 
    Worker.State newValue) -> { 
    if(newValue != Worker.State.SUCCEEDED) { 
     return; 
    } 

    // Your logic here 
    }); 
संबंधित मुद्दे