2013-11-14 4 views
2

저는 JavaFX의 초보자입니다.JavaFX - Scene Builder 또는 NetBeans를 통해 WebView에 URL을 제공합니다.

JavaFX 장면 빌더에서 레이아웃을 만들었습니다. WebView를 떠났지만 URL을 제공하는 방법을 생각할 수 없습니다. 별도의 클래스에서

나는

public class GoogleApp extends Application { 

private Scene scene; 
MyBrowser myBrowser; 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    launch(args); 
} 

@Override 
    public void start(Stage primaryStage) { 
    primaryStage.setTitle("Railway Scenario Development"); 

    myBrowser = new MyBrowser(); 
    scene = new Scene(myBrowser, 800, 600); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

class MyBrowser extends Region{ 

    HBox toolbar; 

    WebView webView = new WebView(); 
    WebEngine webEngine = webView.getEngine(); 

    public MyBrowser(){ 

     final URL urlGoogleMaps = getClass().getResource("demo.html"); 
     webEngine.load(urlGoogleMaps.toExternalForm()); 

     getChildren().add(webView); 

    } 

} 
} 

준비가 내 웹보기를했지만 나는 장면 빌더에서 변경 한 내 응용 프로그램에서이를 포함해야합니다. Scene Builder에는 WebView Panel이 있으며 위에서 언급 한 코드처럼 보이게하고 싶습니다.

내 응용 프로그램 코드는 fxml 파일을 "장면"(아래 그림)으로 사용합니다.

public class Railway extends Application { 

private Scene scene; 


@Override 
public void start(Stage stage) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
    stage.setTitle("Railway Scenario Development"); 

    scene = new Scene(root); 

    stage.setScene(scene); 
    stage.show(); 
} 


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

} 

그림 FXMLDocumentController 파일에서 뭔가를해야합니다. 그러나 어떻게 그리고 무엇. 안내해주십시오.

답변

0

이제 작업이 완벽하게 ...이

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.fxml.FXML; 
import javafx.scene.layout.StackPane; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
public class FXMLDocumentController { 

@FXML 
private ResourceBundle resources; 

@FXML 
private URL location; 

@FXML 
private StackPane root; 


@FXML 
void initialize() { 
    assert root != null : "fx:id=\"root\" was not injected: check your FXML file 'FXMLDocument.fxml'."; 
WebView view = new WebView(); 
    WebEngine engine = view.getEngine(); 
    engine.load("http://www.google.com/"); 
    root.getChildren().add(view); 
} 
} 
+0

죄송합니다. 도움이되지 않습니다. 나는 이미 그 파일을 훑어보고 나가는 길을 찾지 못했습니다. – satnam

+0

앵커 창과 그 안에 열려있는 webview를 가져 가라. –

+1

@ Satnamxv63 나는 대답과 그 작업을 완벽하게 편집했다. –

0

시도 나는 첫 번째 버전에 대한 방법을 발견했다.

기타 시도해 볼 수 있습니다 : http://java-buddy.blogspot.de/2012/05/embed-webview-in-fxml-to-load.html.

그것은 나를 위해 일했습니다.

다음은 FXML 파일의 예입니다.

@FXML 
private MyBrowser mybrowser; 

이이 문제를 해결해야합니다

<?xml version="1.0" encoding="UTF-8"?> 

<?import java.lang.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafxml_web.*?><!--- Important Use your own Package instead of "javafxml_web.*" ---> 

<AnchorPane id="AnchorPane" prefHeight="500" prefWidth="660" xmlns:fx="http://javafx.com/fxml" fx:controller="javafxml_web.Sample"> 
    <children> 
     <MyBrowser id="mybrowser" layoutX="10" layoutY="10" prefHeight="460" prefWidth="620" fx:id="mybrowser" /> 
    </children> 
</AnchorPane> 

그리고 당신의 Controllerclass에

당신은 사용해야합니다.

관련 문제