2017-12-04 8 views
1

코드 일부에서 WebView 객체의 크기를 변경하고 싶습니다. 여기에 코드의 일부입니다 : "눌러 입력합니다"그것은 컴파일주는 오류 및 없이 실행JavaFX의 Webview에서 "resize()"메서드가 작동하지 않습니다.

textbox.setOnKeyPressed(new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent ke) { 
     if(ke.getCode() == KeyCode.ENTER){ 

      System.out.println("Enter pressed!"); 
      if(webEngine.isResizable()) 
        System.out.println("It's Resizable!"); 
      webEngine.resize(300,200);  //doesn't work! 

     } 
    } 
    }); 

"크기 조정 가능!" 입력을 누르면 콘솔에 메시지가 표시되지만 webEngine 객체의 크기는 변경되지 않습니다.

아무도 도와 줄 수 있습니까? 감사.

답변

1

당신은 당신의 선택의 용기의 내부에 웹보기 퍼팅을 시도하고 다음 if 문 주위에 당신은 또한 괄호를 넣어해야 컨테이너의 크기를 조정하고이 코드를 실행하므로

VBox vbox = new VBox(); 
vbox.getChildren().add(webView); 
if(vbox.isResizable()){ 
    System.out.println("It's Resizable!"); 
    vbox.resize(300,200);  //doesn't work! 
} 

같은 점에서 크기 조정을 추가해야합니다 그것을 테스트하고 그것을 완벽하게 달렸다는 뜻으로 크기가 조정되었음을 의미합니다.

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.TextField; 
import javafx.scene.input.KeyCode; 
import javafx.scene.layout.VBox; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     VBox vbox = new VBox(); 
     TextField textbox = new TextField(); 
     WebView webView = new WebView(); 
     WebEngine webEngine = webView.getEngine(); 
     webEngine.load("https://www.google.com/"); 

     textbox.setOnKeyPressed(ke -> { 
      if(ke.getCode() == KeyCode.ENTER){ 

       System.out.println("Enter pressed!"); 

       if(vbox.isResizable()) { 
        System.out.println("It's Resizable!"); 
        vbox.resize(300, 200);  //doesn't work! 
       } 
      } 
     }); 

     vbox.getChildren().addAll(textbox,webView); 
     Scene scene = new Scene(vbox); 
     Stage stage = new Stage(); 
     stage.setScene(scene); 
     stage.show(); 
    } 

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