Key event dla textField

0

Piszę program gdzie jedną z funkcji jest przeglądanie sieci internet. Mam jednak problem którego nie umiem rozwiązać. Otóż chciałbym dodać obsługę naciśnięcia przycisku 'Enter' do TextField-a o nawie 'url'. Kombinowałem z 'addEventHandler' ale nie doszedłem do żadnego rozwiązania które by działało. Bardzo bym prosił o wszelką pomoc w napisaniu tego.

public class MainSceneController implements Initializable { 
    @FXML
    public VBox mainView;
    //Zmienne WebView
    public WebView viev;
    public WebEngine engine;
    public TextField url;
    
    
        public void startBrowser(ActionEvent event) {
           // MainView.getChildren().clear();
            //mainView.setSpacing(8);
            url = new TextField("https://www.google.pl");
            url.setMinHeight(30);
            mainView.getChildren().add(url);
            viev = new WebView();
            engine = viev.getEngine();
            engine.load("https://www.google.pl");
            mainView.getChildren().add(viev);
    }
        
   
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}
0
url.addKeyListener(...);

w obsłudze

    public void keyReleased(KeyEvent ke)
    {
        if(ke.getKeyCode()==KeyEvent.VK_ENTER)
        {
            //zrób coś;
        }
    }
0

Wszystko było by w porządku gdybym pokazał może importy niestety TextField pochodzi z pakietu
javafx.scene.control.TextField;
Gdyby to był swing to nie pytał bym o to, niestety nie jest. W javaFX jest tylko addEventHandler i tak jak mówiłem nie potrafię tego rozgryźć.

0

W końcu udało mi się znaleźć przykład przeglądarki i na jej podstawie rozwiązałem swoje problemy. Rozwiązanie dla ciekawskich.

public class MainSceneController implements Initializable {
    
    @FXML
    public VBox mainView;
    public VBox contentBox;
    public WebView viev;
    public WebEngine engine;
    public TextField url;
    
        public void startBrowser(ActionEvent event) {
           // MainView.getChildren().clear();
            //mainView.setSpacing(8);
            mainView.getChildren().clear();
            url = new TextField("http://www.google.pl");
            
            url.setOnAction(goAction);
            url.setMinHeight(30);
            mainView.getChildren().add(url);
            viev = new WebView();
            engine = viev.getEngine();
            
            engine.locationProperty().addListener(new ChangeListener<String>(){

                @Override
                public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                   url.setText(newValue);
                }
                
            
            engine.load("https://www.google.pl");
            mainView.getChildren().add(viev);
    }
        
        public void loadSite(){
            engine.load(url.getText());
        }
        
        
        EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
                @Override public void handle(ActionEvent event) {
                    engine.load(url.getText().startsWith("http://")|| url.getText().startsWith("https://") ? url.getText() :
                            "http://" + url.getText());
                }
            };
        

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1