以前の (未回答の) 質問で述べたように、プログラムに埋め込むことができる画像エディターを作成しています。そこで、イメージ エディタには元に戻す機能とやり直し機能が必要だと判断しました。だから私はこのコードを書いた:
public Vector<Color[][]> undo = new Vector<Color[][]>();
size = 16;
public Color[][] chroma = new Color[size][size];
//These are variables
public void saveRevision(){
System.out.println("Saving: " + current);
undo.insertElementAt(chroma.clone(), current);
current++;
/*for (int i = 0; i < (undo.size()-1); i++) {
if(i > current){
undo.remove(i);
}
}*/
}
public void undo(){
if(current > 0){
System.out.println("Gathering: " + (current-1));
current--;
/*Color[][] c = undo.get(current);
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) {
System.out.print(c[i][j]);
}
System.out.println();
}*/
/*for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
chroma[i][j] = null;
}
}*/
chroma = undo.get(current);
repaint();
}
}
public void redo(){
if((undo.size()-1) > current){
System.out.println("Gathering: " + (current+1));
current++;
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
chroma[i][j] = null;
}
}
chroma = undo.get(current);
repaint();
}
}
問題は、すべてのクロマ リビジョンを持つベクターから配列内に書き込めないことです。ご覧のとおり、すべて試してみましたが、「chroma」変数は変更されていないようです。Em 私は何か間違ったことをしていますか?
言及するのを忘れていました: Undo と Redo は JButton を使用してトリガーされ、リビジョンはマウス ボタンが離されるたびに作成されます。