- 締切済み
Undo/Redo機能の実装
swingで作っているブラウザーに進むと 戻るの機能を実装したいのですが、 なかなかブラウザーにこの機能をつけたサンプルが みつからなくて、どなたか教えていただけないでしょうか? RedoAction redoAction = new RedoAction(); UndoAction undoAction = new UndoAction(); mn2.add(redoAction); mn2.add(undoAction); class RedoAction extends AbstractAction{ RedoAction(){ putValue(NAME, "進む"); } public void actionPerformed(ActionEvent e){ } } class UndoAction extends AbstractAction{ UndoAction(){ putValue(NAME, "戻る"); } public void addDocument(String text, String type, String title) { //JEditorPane html = new JEditorPane(type , text); html.setEditable(false); html.addHyperlinkListener(this); JScrollPane pane = new JScrollPane(html); tabPane.addTab(title, null , pane); } public void addDocument(URL url) { html.setContentType("text/html "); html.setEditable(false); html.addHyperlinkListener(this); try { html.setPage(url); } catch(Exception err) { } JScrollPane pane = new JScrollPane(html); tabPane.addTab(url.toString() , null , pane); }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ngsvx
- ベストアンサー率49% (157/315)
「進む」の処理を分岐するかどうかで多少違いますが、基本的にはそれほど難しい処理ではありません。 ただ、手間はかかります。 1.ページ表示用メソッドを作る ページの表示、切り替えなどは全てこのメソッドを使い、他の方法を使わない。 処理内容は、指定されたURLのページを表示し、履歴用クラスを更新する。 ハイパーリンクのクリックもこのメソッドで行うこと。 2.履歴用クラスを作る URLの履歴及び現在履歴中のどのURLを表示しているかを管理する。 メソッド ・URL pageBack(); //履歴を戻る ・int getNextPageCount(); //次のページが何通りか ・URL pageForword(int pageNo);//履歴を進む ・pageForword(URL);//指定ページへ移動 ・URL getBackUrl();//戻る場合のURL ・URL getForwordUrl(int pageNo);//進む場合のURL ・URL getCurrentUrl();//現在のURL 3.戻るボタン 履歴の戻り先URLを調べ、戻り先があれば履歴を戻し、そのページを表示する。 4.進むボタン 「戻る」と同様 たぶん、これを実装すれば実現できると思います。 「進む」を分岐しないのなら、履歴はArrayListなどを利用すればそれほど難しくはないと思います。