Webapp Doubt - Netbeans Javafx

Asked

Viewed 87 times

0

I am testing to create a webapp in . jar for desktop even, using the NETBEANS Webview Sample Tool - Javafx. The code is as shown below. I’m just looking for a way to remove the address field and the "GO" button, leaving the window only with the content of the blog page, for example.

package webviewbrowser;

import java.util.List;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewBrowser extends Application {

    @Override public void start(Stage primaryStage) throws Exception {
        Pane root = new WebViewPane();
        primaryStage.setScene(new Scene(root, 1024, 768));
        primaryStage.show();
    }


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


    public class WebViewPane extends Pane {

        public WebViewPane() {
            VBox.setVgrow(this, Priority.ALWAYS);
            setMaxWidth(Double.MAX_VALUE);
            setMaxHeight(Double.MAX_VALUE);

            WebView view = new WebView();
            view.setMinSize(500, 400);
            view.setPrefSize(500, 400);
            final WebEngine eng = view.getEngine();
            eng.load("http://www.blogmarciocunha.com.br");
            final TextField locationField = new TextField("http://www.blogmarciocunha.com.br");
            locationField.setMaxHeight(Double.MAX_VALUE);
            Button goButton = new Button("Go");
            goButton.setDefaultButton(true);
            EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
                @Override public void handle(ActionEvent event) {
                    eng.load(locationField.getText().startsWith("http://") ? locationField.getText() :
                            "http://" + locationField.getText());
                }
            };
            goButton.setOnAction(goAction);
            locationField.setOnAction(goAction);
            eng.locationProperty().addListener(new ChangeListener<String>() {
                @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                    locationField.setText(newValue);
                }
            });
            GridPane grid = new GridPane();
            grid.setVgap(5);
            grid.setHgap(5);
            GridPane.setConstraints(locationField, 0, 0, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.SOMETIMES);
            GridPane.setConstraints(goButton,1,0);
            GridPane.setConstraints(view, 0, 1, 2, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
            grid.getColumnConstraints().addAll(
                    new ColumnConstraints(100, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true),
                    new ColumnConstraints(40, 40, 40, Priority.NEVER, HPos.CENTER, true)
            );
            grid.getChildren().addAll(locationField, goButton, view);
            getChildren().add(grid);
        }

        @Override protected void layoutChildren() {
            List<Node> managed = getManagedChildren();
            double width = getWidth();
            double height = getHeight();
            double top = getInsets().getTop();
            double right = getInsets().getRight();
            double left = getInsets().getLeft();
            double bottom = getInsets().getBottom();
            for (int i = 0; i < managed.size(); i++) {
                Node child = managed.get(i);
                layoutInArea(child, left, top,
                               width - left - right, height - top - bottom,
                               0, Insets.EMPTY, true, true, HPos.CENTER, VPos.CENTER);
            }
        }
    }
}

1 answer

0

Just remove the lines that add the elements to the WebViewPane. Since you will no longer use these controls, it makes no sense to keep the snippets where the instances are created and the events are defined, so this can also be removed.

If you only want a scene with the content of the web page, this is enough:

// Omitindo imports.

public class StackOverflow extends Application {

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

   @Override
   public void start(Stage primaryStage){

      final WebView webView = new WebView();
      final WebEngine webEngine = webView.getEngine();
      webEngine.load("http://www.blogmarciocunha.com.br");

      BorderPane borderPane = new BorderPane();
      borderPane.setCenter(webView);

      primaryStage.setScene(new Scene(borderPane, 1024, 768));
      primaryStage.setMaximized(true);
      primaryStage.setVisible(true);
   }  
}

I don’t remember if BorderPane has bar of scroll... if the above code does not allow you to scroll the page, create a ScrollPane to insert the webView:

// ...

ScrollPane scrollPane = new ScrollPane();
scrollPane.setContent(webView);

BorderPane borderPane = new BorderPane();
borderPane.setCenter(scrollPane);

primaryStage.setScene(new Scene(borderPane, 1024, 768));

// ...
  • What would the code look like with scrollpane?

  • Same as the first, but under webEngine.load(...); Voce replaced by the code I put underneath.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.