如何在javafx浏览器中操作链接 //进程历史记录 最终WebHistory history=webEngine.getHistory(); history.getEntries().addListener(新建 ListChangeListener(){ @凌驾 更改公众假期(更改

如何在javafx浏览器中操作链接 //进程历史记录 最终WebHistory history=webEngine.getHistory(); history.getEntries().addListener(新建 ListChangeListener(){ @凌驾 更改公众假期(更改,java,netbeans,web,browser,javafx,Java,Netbeans,Web,Browser,Javafx,在您的代码中,您应该首先尝试了解历史记录在浏览器中的显示方式如果您了解了这一点,那么我想您只需编写一个简单的if-else逻辑来操作指向任何您想要的位置的链接,因此首先尝试显示历史记录,我想这应该会起到作用您可以进一步解释一下您正在尝试的内容吗实现?你说的“操纵”是什么意思链接?点击url不会引导你到达目的地吗?如果你看到你的GUI在此期间冻结,这可能是一个常见的并发问题。如果你想解析/更改链接,这是另一个有趣的问题。请阅读stack*站点上一个好问题的基础知识。你有没有找到解决方案?我很乐意快

在您的代码中,您应该首先尝试了解历史记录在浏览器中的显示方式如果您了解了这一点,那么我想您只需编写一个简单的if-else逻辑来操作指向任何您想要的位置的链接,因此首先尝试显示历史记录,我想这应该会起到作用

您可以进一步解释一下您正在尝试的内容吗实现?你说的“操纵”是什么意思链接?点击url不会引导你到达目的地吗?如果你看到你的GUI在此期间冻结,这可能是一个常见的并发问题。如果你想解析/更改链接,这是另一个有趣的问题。请阅读stack*站点上一个好问题的基础知识。你有没有找到解决方案?我很乐意快速偷看一下代码片段。我的代码在历史记录中似乎失败了。go(offset)好的,我试过了,我得到了历史记录,但是你能帮我弄清楚我应该使用什么逻辑吗?如果(gethistory){操纵链接}我希望你得到它
        //process history
        final WebHistory history = webEngine.getHistory();

        history.getEntries().addListener(new 
            ListChangeListener<WebHistory.Entry>(){
                @Override
                public void onChanged(Change<? extends Entry> c) {
                    c.next();
                    for (Entry e : c.getRemoved()) {
                        comboBox.getItems().remove(e.getUrl());

                    }

                    for (Entry e : c.getAddedSubList()) {
                        comboBox.getItems().add(e.getUrl());
                    }
                        System.out.println(webEngine.getLocation());
                    if(webEngine.getLocation().matches("http://www.google.co.in/")){}
                    else if(webEngine.getLocation().contains("http://in.yahoo.com/")){}
                    else{

          browser.setOnMouseClicked(new EventHandler<MouseEvent>(){

          @Override
          public void handle(MouseEvent arg0) {

                String[] manipulateurl= {
                                         "http://www.gmail.com",
                                         "http://www.flipkart.com"};
                String temp=address.getText();


               if (manipulatedindex>1)
                   manipulatedindex=0;

               temp=manipulateurl[manipulatedindex];
               System.out.println(manipulateurl[manipulatedindex]+"      "+temp);
               address.setText(temp);


                webEngine.load(temp);
                manipulatedindex++;

}

    });}



//                         webEngine.getLocation()
                }
        });

        //set the behavior for the history combobox               
        comboBox.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent ev) {
                int offset =
                        comboBox.getSelectionModel().getSelectedIndex()
                        - history.getCurrentIndex();
                history.go(offset);
            }
        });



        // process page loading
        webEngine.getLoadWorker().stateProperty().addListener(
            new ChangeListener<State>() {
                @Override
                public void changed(ObservableValue<? extends State> ov,
                    State oldState, State newState) {
                    toolBar.getChildren().removeAll(showAll, hideAll);    
                    if (newState == State.SUCCEEDED) {
                            JSObject win = 
                                (JSObject) webEngine.executeScript("window");
                            win.setMember("app", new JavaApp());
                            if (needForumButtons) {
                                toolBar.getChildren().addAll(showAll, hideAll);
                            }
                        }
                    }
                }
        );

        // load the home page  
        String x="http://www.google.com";
    webEngine.load(x);
        //add components

        getChildren().add(toolBar);


        getChildren().add(browser);
    }

    // JavaScript interface object
    private class JavaApp {

        public void exit() {
            Platform.exit();
        }
    }

    private Node createSpacer() {
        Region spacer = new Region();
        HBox.setHgrow(spacer, Priority.ALWAYS);
        return spacer;
    }

    @Override
    protected void layoutChildren() {
        double w = getWidth();
        double h = getHeight();
        double tbHeight = toolBar.prefHeight(w);
        layoutInArea(browser,0,0,w,h-tbHeight,0,HPos.CENTER,VPos.CENTER);
        layoutInArea(toolBar,0,h-tbHeight,w,tbHeight,0,HPos.CENTER,VPos.CENTER);
    }

    @Override
    protected double computePrefWidth(double height) {
        return 750;
    }

    @Override
    protected double computePrefHeight(double width) {
        return 600;
    }
}