[英]how to access jtextarea from one jframe to other jframe
我有2個jframe.in 1個jframe,我在jtextarea中輸入,應該在另一個jframe jtextarea中顯示。我怎么能得到它。 我正在使用netbeans,我已經使用swing設計了jframe。 誰能幫我。
您可能只是在兩個文本組件之間共享相同的Document實例: thisTextArea.setDocument(thatTextArea.getDocument())
以下代碼可能比以前的任何神秘解釋更好地說明了這一點::)
public class SourceFrame extends JFrame {
private final JTextArea sourceArea = new JTextArea();
private TargetFrame targetFrame; // somehow set this one
public void addDocumentListener(DocumentListener listener) {
sourceArea.getDocument().addDocumentListener(listener);
}
public void removeDocumentListener(DocumentListener listener) {
sourceArea.getDocument().removeDocumentListener(listener);
}
}
public class TargetFrame extends JFrame {
private final JTextArea targetArea = new JTextArea();
private final SourceFrame sourceFrame;
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()));
}
}
}
}
理想情況下,應該有一個公共方法來在TargetFrame中設置文本並在其他地方實現偵聽器,因此這兩個框架都不需要引用另一個框架。
正確的方法是使用觀察者模式 (也稱為偵聽器)。 通常,兩個主框架不應該知道從屬框架。 它應該提供一種通知感興趣的人的方法 。 因此在代碼中:
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()
返回創建事件的組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.