JavaFX を実践するためのブラウザを作成しようとしています。スタックで戻るボタンを実装しました。
- ページのURLが変わったらStack(java.util.Stack)にURLを追加する
- 戻るボタンを押すと、スタックからアイテムを 1 つポップしてページを表示します
ただし、これは URL リダイレクトの場合には機能しません。例えば。http://www.google.comと入力すると、自動的にhttp://www.google.co.in (インド)にリダイレクトされます。これにより、スタックに 2 つのエントリが作成され、ページは同じであるが異なる場所から取得されているため、[戻る] ボタンのロジックが破損します。
この問題の解決にご協力ください。
ご協力いただきありがとうございます
webEngine.locationProperty().addListener(new ChangeListener<String>(){
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
//urlField is a text Field
urlField.setText(newValue);
addURLToStack(oldValue);
if(backButtonStack.size() ==1){ //means on last url of Stack
backButton.setDisable(true);
}
else{
backButton.setDisable(false);
}}
});
backButton.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
if(backButtonStack != null && !backButtonStack.isEmpty()){
String poppedURL = backButtonStack.pop();
webEngine.load(poppedURL);
}
}
});
private void addURLToStack(String url) {
if(backButtonStack == null){
backButtonStack = new Stack<String>();
}
backButtonStack.push(url);
}