السلام عليكم
احتاج لمساعدة بربط Two Classes مع بعض ، بحيث أستخدم الدوال الموجودة في الكلاس الاولى داخل الكلاس الثانية..
هذا كود الكلاس الأول ما في مشاكل
class TextWithUndo {
private Entry first, last;
private boolean startCommand;
public void newCommand() { startCommand = true; }
public boolean undoable() { return last!=null; }
public boolean redoable() { return last!=null && last.next!=null; }
public void add(Entry e) {
if(last==null)
first = e;
else last.next = e;
e.prev = last;
last = e;
e.startCommand = startCommand;
startCommand = false;
e.redo();
}
public void undo() {
boolean done;
do {
if(last==null) break;
last.undo();
done = last.startCommand;
last = last.prev;
} while(!done);
}
public void redo() {
while(last!=null) {
Entry e = last.next;
if(e==null) break;
e.redo();
last = e;
e = e.next;
if(e==null || e.startCommand) break;
}
}
public abstract static class Entry {
Entry next, prev;
boolean startCommand;
abstract void undo();
abstract void redo();
}
}الكلاس الثاني اللي فيه المشكلة..
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.undo.*;
import javax.swing.text.*;
import javax.swing.event.*;
public class UndoOp extends JFrame {
private JTextPane t1;
public UndoOp() {
super("Undo Operation");
t1 = new JTextPane();
Document doc = t1.getDocument();
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JButton b1 = new JButton("Undo");
p1.setLayout(new GridLayout(1,1));
p1.add(new JScrollPane(t1));
p2.add(b1);
this.getContentPane().add(p1, BorderLayout.CENTER);
this.getContentPane().add(p2, BorderLayout.SOUTH);
setSize(300, 200);
show();
doc.addUndoableEditListener(new UndoableEditListener() {
public void undoableEditHappened(UndoableEditEvent evt) {
//undo.addEdit(evt.getEdit());
}
});
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent h)
{
try {
{
undo.TextWithUndo();
}
}
catch (CannotUndoException e) {
}
}
});
}
public static void main( String args[] )
{
UndoOp app = new UndoOp();
app.addWindowListener(
new WindowAdapter() {
}
);
}
}