单击按钮时如何设置网页?与JavaFX

How to set a web page while clicking on a button ? with JavaFX

我正在尝试从 TextField 示例中获取 URLhttp://www.google.com 我有一个 WebView 通过单击 "Enter key" 但问题是当我 运行 应用程序时它没有显示任何内容,请注意我正在使用 FXML File。这是我跟踪的代码:

@FXML
private void onpressed (ActionEvent ee) {
     text1.setOnKeyPressed(new EventHandler<KeyEvent>() {
         public void handle(KeyEvent evt) {
       if (evt.getCode() == KeyCode.ENTER){
       String az = text1.getText();
       //c.1
       if(text1.getText().equals("1")){
           web1.setVisible(true);
            String hh = text11.getText();
            Socket socket = new Socket();

    try {
        //open cursor
        text1.setCursor(Cursor.WAIT);
        que.setCursor(Cursor.WAIT);
        writ.setCursor(Cursor.WAIT);
        ancpa.setCursor(Cursor.WAIT);
        web1.setCursor(Cursor.WAIT);
        web2.setCursor(Cursor.WAIT);
        web3.setCursor(Cursor.WAIT);
        web4.setCursor(Cursor.WAIT);
        web5.setCursor(Cursor.WAIT);
        web6.setCursor(Cursor.WAIT);
        web7.setCursor(Cursor.WAIT);
        web8.setCursor(Cursor.WAIT);
        web9.setCursor(Cursor.WAIT);
        //do work
        WebEngine myWebEngine = web1.getEngine();
        myWebEngine.load("http://www.google.com");
        //close the window chooser
        Stage stage = new Stage();
          Parent root = FXMLLoader.load(getClass().getResource("Choose.fxml"));
          Scene scene = new Scene(root);
         stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
              @Override public void handle(WindowEvent t) { } });
        //close cursor
        ancpa.setCursor(Cursor.DEFAULT);
        web1.setCursor(Cursor.DEFAULT);
        web2.setCursor(Cursor.DEFAULT);
        web3.setCursor(Cursor.DEFAULT);
        web4.setCursor(Cursor.DEFAULT);
        web5.setCursor(Cursor.DEFAULT);
        web6.setCursor(Cursor.DEFAULT);
        web7.setCursor(Cursor.DEFAULT);
        web8.setCursor(Cursor.DEFAULT);
        web9.setCursor(Cursor.DEFAULT);
    }
   catch (IOException e){
       final  Stage stg = new Stage();           
        stg.initModality(Modality.APPLICATION_MODAL);
        stg.initOwner(stg);
        stg.setTitle("Cannot connect to the internet /n Please Verify your connection internet");
        labelno.setText("Cannot connect to the internet...");
        //close chooser
        Stage stage = new Stage();
         stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
              @Override public void handle(WindowEvent t) { } });

       //set cursor
         ancpa.setCursor(Cursor.DEFAULT);
        web1.setCursor(Cursor.DEFAULT);
        web2.setCursor(Cursor.DEFAULT);
        web3.setCursor(Cursor.DEFAULT);
        web4.setCursor(Cursor.DEFAULT);
        web5.setCursor(Cursor.DEFAULT);
        web6.setCursor(Cursor.DEFAULT);
        web7.setCursor(Cursor.DEFAULT);
        web8.setCursor(Cursor.DEFAULT);
        web9.setCursor(Cursor.DEFAULT);
   } finally{
       try{ socket.close(); } catch (Exception e){ }
       }

          } 
         }
         }

 });

}

所以请任何人为我解释这段代码的问题在哪里,我将非常感激:)

我不太确定你是否想要 'if(text1.getText().equals("1")){' 只有当有人输入字符“1”时,if 语句才会为真,但你如何设置网络引擎是通过从文本字段中获取文本(text1) 并让网络引擎加载它,最好在末尾放置一个 .trim() 以防用户不小心在末尾的开头输入 space。
所以你的代码应该是这样的:

String urlString = text1.getText().trim();
WebEngine myWebEngine = web1.getEngine();
myWebEngine.load(urlString);

你完成的代码应该是这样的:

@FXML
private void onpressed (ActionEvent ee) {
     text1.setOnKeyPressed(new EventHandler<KeyEvent>() {
         public void handle(KeyEvent evt) {
       if (evt.getCode() == KeyCode.ENTER){
       String az = text1.getText();
           web1.setVisible(true);
            String hh = text11.getText();
            Socket socket = new Socket();

    try {
        //open cursor
        text1.setCursor(Cursor.WAIT);
        que.setCursor(Cursor.WAIT);
        writ.setCursor(Cursor.WAIT);
        ancpa.setCursor(Cursor.WAIT);
        web1.setCursor(Cursor.WAIT);
        web2.setCursor(Cursor.WAIT);
        web3.setCursor(Cursor.WAIT);
        web4.setCursor(Cursor.WAIT);
        web5.setCursor(Cursor.WAIT);
        web6.setCursor(Cursor.WAIT);
        web7.setCursor(Cursor.WAIT);
        web8.setCursor(Cursor.WAIT);
        web9.setCursor(Cursor.WAIT);
        String urlString = text1.getText().trim();
        WebEngine myWebEngine = web1.getEngine();
        myWebEngine.load(urlString);    
        Stage stage = new Stage();
          Parent root = FXMLLoader.load(getClass().getResource("Choose.fxml"));
          Scene scene = new Scene(root);
         stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
              @Override public void handle(WindowEvent t) { } });
        //close cursor
        ancpa.setCursor(Cursor.DEFAULT);
        web1.setCursor(Cursor.DEFAULT);
        web2.setCursor(Cursor.DEFAULT);
        web3.setCursor(Cursor.DEFAULT);
        web4.setCursor(Cursor.DEFAULT);
        web5.setCursor(Cursor.DEFAULT);
        web6.setCursor(Cursor.DEFAULT);
        web7.setCursor(Cursor.DEFAULT);
        web8.setCursor(Cursor.DEFAULT);
        web9.setCursor(Cursor.DEFAULT);
    }
   catch (IOException e){
       final  Stage stg = new Stage();           
        stg.initModality(Modality.APPLICATION_MODAL);
        stg.initOwner(stg);
        stg.setTitle("Cannot connect to the internet /n Please Verify your connection internet");
        labelno.setText("Cannot connect to the internet...");
        //close chooser
        Stage stage = new Stage();
         stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
              @Override public void handle(WindowEvent t) { } });

       //set cursor
         ancpa.setCursor(Cursor.DEFAULT);
        web1.setCursor(Cursor.DEFAULT);
        web2.setCursor(Cursor.DEFAULT);
        web3.setCursor(Cursor.DEFAULT);
        web4.setCursor(Cursor.DEFAULT);
        web5.setCursor(Cursor.DEFAULT);
        web6.setCursor(Cursor.DEFAULT);
        web7.setCursor(Cursor.DEFAULT);
        web8.setCursor(Cursor.DEFAULT);
        web9.setCursor(Cursor.DEFAULT);
   } finally{
       try{ socket.close(); } catch (Exception e){ }
       }

          } 
         }
         }

 });

}

希望对您有所帮助。如果您有任何问题,请尽管提问。

这是一个简单的示例应用程序,当您在文本字段中按回车键时,它会转到您输入的网页:

package application;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Main extends Application {




@Override
public void start(Stage stage) throws Exception {
    AnchorPane pane = new AnchorPane();
    Scene scene = new Scene(pane);

    final TextField text1 = new TextField();
    WebView web = new WebView();
    final WebEngine webEngine= web.getEngine();
    text1.setOnKeyPressed(new EventHandler<KeyEvent>() {
        public void handle(KeyEvent ke) {
            if (ke.getCode().toString().equalsIgnoreCase("ENTER")) {
                           String urlString = text1.getText().trim();
                           webEngine.load(urlString);

    }
    }
    });
    pane.getChildren().addAll(web,text1);

    stage.setScene(scene);
    stage.sizeToScene();
    stage.show();
}
public static void main(String[] args) {
    Application.launch("application.Main");
}
} 

您可以尝试输入 https://www.google.com,它应该会带您到那里
如果您排除 http 或 https 它应该不起作用
根据您的 jre,您可能需要删除 @Override
希望对您有所帮助