• 締切済み

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); }

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

「進む」の処理を分岐するかどうかで多少違いますが、基本的にはそれほど難しい処理ではありません。 ただ、手間はかかります。 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などを利用すればそれほど難しくはないと思います。

関連するQ&A