Правильный способ сделать это - использовать шаблон Observer (также называемый слушателем). Как правило, два основных кадра не должны знать о зависимом кадре. Это должно обеспечить способ уведомления , кто заинтересован . Так в коде:
public class SourceFrame extends JFrame {
private final JTextArea sourceArea = new JTextArea();
private TargetFrame targetFrame; // somehow set this one
public void addTextChangeKeyListener(KeyListener listener) {
sourceArea.addKeyListener(listener);
}
// a method to remove the listener might be required as well
}
А затем в TargetFrame вы подписываетесь на ключевые события, которые происходят в области исходного текста:
public class TargetFrame extends JFrame {
private final JTextArea targetArea = new JTextArea();
private SourceFrame sourceFrame; // set this via constructor
// this is called on initialization, perhaps from the constructor.
// Check what NetBeans has generated
public void init() {
sourceFrame.addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent event) {
Document doc = event.getDocument();
targetArea.setText(doc.getText(0, doc.getLength()));
}
public void insertUpdate(DocumentEvent event) {
Document doc = event.getDocument();
targetArea.setText(doc.getText(0, doc.getLength()));
}
public void removeUpdate(DocumentEvent event) {
Document doc = event.getDocument();
targetArea.setText(doc.getText(0, doc.getLength()));
}
}
}
e.getSource()
возвращает компонент, который создал событие.