0

Java でテキスト エディターを作成し、元に戻す機能を追加したい

UndoManager Class がなければ、Stack や LinkedList のようなデータ構造を使用する必要がありますが、Java の Stack クラスは Object パラメータを使用します。ありがとう

4

4 に答える 4

7

Java 5 を使用していると仮定すると、Stack は汎用クラスです。保持するオブジェクトに従ってインスタンス化できます。

その後、次を使用できます。

Stack<String> stack = new Stack<String>();
String string = "someString";
stack.push(string);

また、Java 1.4 以下を使用している場合でも、String オブジェクトをスタックにプッシュできることに注意してください。次のように、 pop() アウトするときに明示的にダウンキャストする必要があるだけです。

Stack stack = new Stack();
String string = "someString";
stack.push(string);

String popString = (String) stack.pop(); // pop() returns an Object which needs to be downcasted
于 2008-11-28T11:56:54.477 に答える
3

実際にはパターンである「データ構造」はMementoと呼ばれます。複数の状態を保存する必要があり、以前の状態に戻るオプションがある場合に役立ちます。状態の効率的なデータ ストレージは、実行しているテキスト エディターの種類によって異なります。書式設定を行うことができる場合は、Flyweightパターンを見てください。

于 2008-11-28T11:59:23.910 に答える
1

うーん...

私にはRTFMのケースに少し似ているようです;-)

Java 1.4.2 を使用している場合は、スタックからオブジェクトを取得するときにオブジェクトを明示的にキャストする必要があります。

Command cmd = (Command) stack.pop(); // same for peek() etc.

Java 1.5 を使用している場合は、Genericsを使用してください。明示的なキャストは必要ありません。

于 2008-11-28T12:02:56.773 に答える
0

わかりました、私はそれを解決します

キーボードの文字ではなく、textAreaのテキストをプッシュする必要があります

みんなありがとう

于 2008-11-28T12:34:25.133 に答える