2013-12-06 2 views
4

Я собрал минимально жизнеспособный просмотрщик html с Java. Единственной проблемой, с которой я столкнулся, является привязка размера компонента браузера к размеру JFrame. Я знаю, что, вероятно, я пропустил только одну строку кода, но сегодня мой google fu слишком слаб. См. Ниже полный код браузера. В настоящее время браузер, кажется, установлен на расстоянии около 300 пикселей независимо от размера кадра.Сделать растяжку сцены javafx с рамкой контейнера

Спасибо, Лаури

import javafx.application.Platform; 
import javafx.embed.swing.JFXPanel; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 

import javax.swing.*; 

public class testBrowser { 

/* Start swing thread */ 
public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       showBrowser("http://www.stackoverflow.com"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 


public static void showBrowser(final String url) { 

    // This method is invoked on Swing thread 
    JFrame frame = new JFrame("FX"); 
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

    final JFXPanel fxPanel = new JFXPanel(); 

    frame.add(fxPanel); 
    frame.setVisible(true); 
    frame.pack(); 

    Platform.runLater(new Runnable() { // this will run initFX as JavaFX-Thread 
     @Override 
     public void run() { 
      initFX(fxPanel, url); 
     } 
    }); 
} 


/* Creates a WebView and fires up google.com */ 
private static void initFX(final JFXPanel fxPanel, String url) { 
    Group group = new Group(); 
    final Scene scene = new Scene(group); 

    WebView webView = new WebView(); 

    group.getChildren().add(webView); 

    // Obtain the webEngine to navigate 
    WebEngine webEngine = webView.getEngine(); 
    webEngine.load(url); 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      fxPanel.setScene(scene); 
     } 
    }); 
} 
} 

ответ

3

Используйте AnchorPane, чтобы создать сцену, то WebView будет привязан ко всем 4 угла AnchorPane и изменение размера должно привести к его растягивать соответствующим

//Create Layout + WebView 
AnchorPane anchorPane = new AnchorPane(); 
WebView webView = new WebView(); 

//Set Layout Constraint 
AnchorPane.setTopAnchor(webView, 0.0); 
AnchorPane.setBottomAnchor(webView, 0.0); 
AnchorPane.setLeftAnchor(webView, 0.0); 
AnchorPane.setRightAnchor(webView, 0.0); 

//Add WebView to AnchorPane 
anchorPane.getChildren().add(webView); 

//Create Scene 
final Scene scene = new Scene(anchorPane); 

// Obtain the webEngine to navigate 
WebEngine webEngine = webView.getEngine(); 
webEngine.load(url); 
+0

Это прекрасно, спасибо! – lwa

Смежные вопросы