0

I'm creating a rudimentary browser in Java. (just to see if I can) Right now, I have basic browsing functionality, and I'm trying to use TabPane to create a tab system. However, when I try to run the program, it stops and says a NullPointerException is triggered by the part where I set my tabs. However, I can't for the life of me figure out what to do to fix it. I am using IntelliJ-Idea. The section of code which triggers it is below:

    stage.setTitle("Dodge Browser");
    stage.setWidth(1024);
    stage.setHeight(768);

    WebView browser[] = new WebView[5];
    //WebEngine webEngine = browser.getEngine();
    Scene scene = new Scene(new Group());

    VBox root = new VBox();
    HBox url_layout = new HBox();

    TabPane tabs = new TabPane();
    Tab[] tab = new Tab[5];

    for(int i = 0; i < tab.length; i++){
        tab[i].setText("Tab"); // this is where the IDLE tells me the error stems from
        tabs.getTabs().add(tab[i]);
        tab[i].setContent(browser[i]);
    }

The full code is below if you want it:

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TabPane;
import javafx.scene.control.Hyperlink;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.control.Tab;
import javafx.concurrent.Worker.State;

import java.awt.*;

public class browser_tabs extends Application {

    static String toGo = "http://www.google.com";
    @Override
    public void start(Stage stage) {
        stage.setTitle("Dodge Browser");
        stage.setWidth(1024);
        stage.setHeight(768);
        WebView browser[] = new WebView[5];
        //WebEngine webEngine = browser.getEngine();
        Scene scene = new Scene(new Group());
        VBox root = new VBox();
        HBox url_layout = new HBox();
        TabPane tabs = new TabPane();
        Tab[] tab = new Tab[5];
        for(int i = 0; i < tab.length; i++){
            tab[i].setText("Tab");
            tabs.getTabs().add(tab[i]);
            tab[i].setContent(browser[i]);
        }


        Button go = new Button("Go");
        TextField url = new TextField();
        url.setPrefWidth(500);
        browser[currentSelection(tab)].getEngine().load(toGo);
        go.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                String newAddress = url.getText();
                browser[currentSelection(tab)].getEngine().load(newAddress);
            }
        });

        browser[currentSelection(tab)].getEngine().getLoadWorker().stateProperty().addListener(
                new ChangeListener<State>() {
                    @Override
                    public void changed(ObservableValue<? extends State> observable, State oldValue, State newValue) {
                        url.setText(browser[currentSelection(tab)].getEngine().getLocation());
                    }
                }
        );

        url_layout.getChildren().addAll(url, go);
        url_layout.setSpacing(10);

        root.getChildren().addAll(url_layout,tabs);
        scene.setRoot(root);

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

    static int currentSelection(Tab[] tab){
        for(int i = 0; i < tab.length; i++){
            if(tab[i].isSelected()){
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        launch(args);
    }
}
JimHawkins
  • 4,843
  • 8
  • 35
  • 55
a.deshpande012
  • 715
  • 7
  • 18

0 Answers0