No.2ベストアンサー
- 回答日時:
Swing には undo パッケージがありますので、テキストエディターならば基本的にはこれを使うだけで実現可能です。
JDK に付属するサンプルとして JDK をインストールしたフォルダーの下に demo/jfc/Stylepad というフォルダーがあり、そこには文字の編集や色の変更の undo/redo ができるサンプルコードがあります。このサンプルも上記の undo パッケージを使っているはずです。
ただ、undo/redo の概念は、通常のロジックに比べてかなり高度ですので、理解にはかなりのコストがかかります。
参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
サンプルコード見ましたが自分の力では理解が難しい内容でした。今後じっくりと理解しようと思います。
解決しました。ありがとうございます。
No.1
- 回答日時:
多分、
自分(自前)で、実行前の状態やコマンドを(再現できるように)保存しておく必要があると思います。
この回答への補足
public class UndoText extends JFrame implements ActionListener{
protected JMenuBar menubar;
protected JMenu editMenu;
protected JMenuItem undoItem;
protected JMenuItem redoItem;
protected JMenuItem exitItem;
protected JTextPane textPane;
public UndoText() {
menubar = new JMenuBar();
editMenu = new JMenu("編集");
menubar.add(editMenu);
undoItem = new JMenuItem("元に戻す");
undoItem.addActionListener(this);
undoItem.setActionCommand("undo");
redoItem = new JMenuItem("やり直す");
redoItem.addActionListener(this);
redoItem.setActionCommand("redo");
editMenu.add(undoItem);
editMenu.add(redoItem);
editMenu.addSeparator();
exitItem = new JMenuItem("閉じる");
exitItem.addActionListener(this);
exitItem.setActionCommand("exit");
editMenu.add(exitItem);
setJMenuBar(menubar);
textPane = new JTextPane();
JScrollPane scroll = new JScrollPane(textPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
getContentPane().add(scroll, BorderLayout.CENTER);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
if(actionCommand.equals("exit")) {
System.exit(0);
}
}
public static void main(String args[]) {
UndoText app = new UndoText();
app.setSize(800, 500);
app.setVisible(true);
}
}
具体的にどうやってやるのかをこれにコードを加えて説明していただけたら幸いです。
初心者で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 付箋ソフトについて 5 2022/10/17 08:04
- iOS iPhoneの画面が見切れて困ってます ゲーム画面などで文字が見切れてしまっていたり タップする部分 2 2022/07/05 22:45
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 15:14
- docomo(ドコモ) docomoでの機種変更 Google Pixel 6a 11 2022/11/20 12:22
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Word(ワード) Wordの機能について教えてください。 2 2023/07/12 15:08
- 画像編集・動画編集・音楽編集 わかりやすい写真編集ソフト 3 2022/07/16 09:59
- その他(スマートフォン・携帯電話・VR) 全部入りでも夜間の動画性能がいいスマホありますか? 5 2022/04/04 16:33
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
java と javax の違いは?
-
Javaでのエラーについて
-
DBから全権検索したデータをjsp...
-
-Applet表示でのjava.lang.Clas...
-
$_SERVER['HTTP_USER_AGENT'] ...
-
AntでのJunitの試験
-
jdk-1_5_0_07でのコンパイルエラー
-
DBにかな情報が登録できません...
-
CLASSPATHを設定しても、『Clas...
-
JavaMail関係でエラーが出ます
-
android-studioがインストール...
-
Javaでマウスカーソルを操作
-
テーブル名が日本語だとクエリ...
-
JSPファイルで生じるエラーをど...
-
VBAの「for i=1 to cells(…」...
-
vba クリップボードクリアにつ...
-
gitでバージョン指定してダウン...
-
正規表現について質問です。 カ...
-
エクリプスのプログラミングに...
-
IISワーカープロセスが原因でCP...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
java と javax の違いは?
-
javaからデータベースに接続 エ...
-
CLASSPATHを設定しても、『Clas...
-
javacのコンパイルでファイルが...
-
JasperExceptionのエラーログの...
-
マイクラ Ender IO 入れたらク...
-
System.inをClose()すると例外...
-
JAVA実行時エラーについて教え...
-
javaサーブレット upload時
-
Eclipseにdllがうまく読み込めない
-
JSFで、マネージビーンに画面の...
-
javaのGUIツールキット
-
propertiesが読み込めなくてnul...
-
DBから全権検索したデータをjsp...
-
テーブル名が日本語だとクエリ...
-
android-studioがインストール...
-
struts2環境構築で不具合が出て...
-
log4jを使用し、JAVAのバッチプ...
-
Tomcatのweb.xmlの設定について
おすすめ情報