2013-01-02 98 views
1

我在想如何在使用子窗口的父窗口中更改某些內容。所以,假設我有一個窗口,按下按鈕後會打開一個彈出窗口。該新窗口包含一個JTextArea和另一個名爲Ok的按鈕。如何在Ok按鈕被按下時根據JTextArea內部的內容更改父窗口的標題?從Java中的子窗口更改父窗口中的某些內容

回答

6

我看到它的方式,常見的有兩種方法可以做到這一點:

  • 子窗口可能信息到父窗口時,按下OK。爲此,子窗口需要對父窗口的引用,然後調用父窗口的公共方法。
  • 父窗口可能來自孩子的信息。這可以以兩種方式之一發生。
    • 如果子窗口是模式對話框,然後家長可以簡單地查詢子窗口一次對話已處理和程序流程返回到母公司的代碼。
    • 如果對話框是非模態對話框,然後父窗口將需要一個監聽器添加到孩子,說PropertyChangeListener,並在適當的事件是由這個監聽器觸發,父窗口將查詢對話窗口的信息。這將是一個使用Observer設計模式的示例。

我更喜歡拉技術,因爲,因爲它是父那就是有代碼以顯示子窗口的對象,並需要從子窗口中的信息,它應該有代碼來提取需要的信息以及子窗口將不需要知道或引用父窗口對象。這對我來說似乎更清潔。

對於此示例,請查看我的代碼here,herehere

編輯:請注意,對於您描述的示例,您可以通過使用JOptionPane輕鬆解決此問題。許多人不知道JOptionPanes可以顯示非常複雜的GUI;基本上任何可以放在JPanel上的東西都可以顯示在JOptionPane中(然後是一些)。您只需顯示顯示JTextField的JOptionPane,並在程序流返回到調用程序時,只需獲取JOptionPane中顯示的JTextField所保存的文本即可。沒有比這更簡單的了。