2013-05-04 7 views
5

वर्तमान में मेरे पास टेक्स्टफ़िल्ल्ड है जो मेरा पता बार और एक वेब व्यू है जो मेरा पृष्ठ है। जब मैं एंटर किया गया क्लिक करता है तो टेक्स्टफिल्ड कुछ भी नहीं कर रहा है। इसका मतलब लोडपेज विधि को चलाने के लिए है और उपयोगकर्ता को पता बार में जो कुछ भी दर्ज किया गया है उसे लोड करने के लिए पृष्ठ पर सेट किया गया है। किसी भी सहायता की सराहना की जाएगी।
जावाएफएक्स टेक्स्टफिल्ड इवेंट हैंडलर

package javafx_webview; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.StackPane; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 

public class Main extends Application { 

    WebEngine myWebEngine; 

    public static void main(String[] args) { 
     launch(args); 
    } 

    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Platinum v1"); 

     TextField addressBar = new TextField(); 

     addressBar.setOnAction(new EventHandler<ActionEvent>() { 
      public void handle(ActionEvent event) { 
       loadPage(event.toString()); 
      } 
     }); 

     WebView myBrowser = new WebView(); 
     myWebEngine = myBrowser.getEngine(); 

     StackPane root = new StackPane(); 
     root.getChildren().add(myBrowser); 
     root.getChildren().add(addressBar); 
     primaryStage.setScene(new Scene(root, 640, 480)); 
     primaryStage.show(); 
    } 

    private void loadPage(String url) { 
     try { 
      myWebEngine.load(url); 
     } catch (Exception e) { 
      System.out.println("The URL you requested could not be found."); 
     } 
    } 
} 

उत्तर

6

यूआरएल पता पट्टी, नहीं पता पट्टी पर कार्रवाई घटना के toString की text से लोड करने के लिए प्राप्त करें।

final TextField addressBar = new TextField(); 
addressBar.setOnAction(new EventHandler<ActionEvent>() { 
    public void handle(ActionEvent event) { 
    myWebEngine.load(addressBar.getText()); 
    } 
}); 

इसके अलावा लोड असीमित है, इसलिए आपका अपवाद हैंडलर काम नहीं करेगा। इंजन से अपवाद प्राप्त करने के लिए आपको वेबेंजिन लोडवर्कर की अपवाद संपत्ति की निगरानी करने की आवश्यकता है। यह भी ध्यान रखें कि एक यूआरएल नहीं मिला है जो एक अपवाद नहीं है, जिसकी रिपोर्ट की जाएगी, इसके बजाय एक वेब सर्वर आमतौर पर http 404 त्रुटि के लिए एक पृष्ठ लौटाएगा।

import javafx.application.Application; 
import javafx.beans.value.*; 
import javafx.event.*; 
import javafx.scene.Scene; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.VBox; 
import javafx.scene.web.*; 
import javafx.stage.Stage; 

public class Main extends Application { 
    private WebEngine myWebEngine; 

    public void start(Stage stage) { 
    stage.setTitle("Platinum v1"); 

    final TextField addressBar = new TextField(); 

    addressBar.setOnAction(new EventHandler<ActionEvent>() { 
     public void handle(ActionEvent event) { 
     myWebEngine.load(addressBar.getText()); 
     } 
    }); 

    WebView myBrowser = new WebView(); 
    myWebEngine = myBrowser.getEngine(); 
    myWebEngine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() { 
     @Override public void changed(ObservableValue<? extends Throwable> observableValue, Throwable oldException, Throwable exception) { 
     System.out.println("WebView encountered an exception loading a page: " + exception); 
     } 
    }); 

    VBox root = new VBox(); 
    root.getChildren().setAll(
     addressBar, 
     myBrowser 
    ); 
    stage.setScene(new Scene(root)); 
    stage.show(); 
    } 

    public static void main(String[] args) { launch(args); } 
} 
+0

आप सही, अपवाद सेट नहीं है कर रहे हैं, तुम कैसे 404 प्रतिक्रिया का पता लगाने जाएगा, ताकि:

यहाँ एक काम नमूना है? –

+0

कृपया वेब व्यू से 404 वेबसर्वर प्रतिक्रियाओं का पता लगाने के संबंध में एक नया प्रश्न पूछें – jewelsea

संबंधित मुद्दे