2010-11-22 65 views
0

首先,讓我們知道我是新來的Java和它的怪癖。我是一個經驗豐富的程序員與各種語言,這可能是爲什麼我卡...問題更新父JFrame

我有一個應用程序,可能是由於糟糕的設計,產生新的JFrames通過用戶的工作流程。我的問題是,如果產生的JFrame中有事件,它是否能夠聯繫並傳遞數據或事件給它的父項?

我讀過使用JDialog似乎是設計的方式,但讓我們假設這不是一個選項。實質上,JFrame1包含一個帶有數據列表的JTable。一個動作產生JFrame2和一個用戶「做某事」,影響JFrame1列表中的數據。關閉JFrame2後,有沒有辦法根據JFrame2的關閉事件來控制JTable?

這是一個非常基本的概念,我似乎無法找到允許這種操作的機制。

謝謝!

回答

0

您可以使用「偵聽器」來偵聽各種事件。

聽起來你可能想從How to Write a Window Listener開始。

我讀過使用JDialog似乎是設計的方式,但讓我們假設這不是一個選項。

爲什麼?代碼與爲此目的而設計的JDialogs相同。說你需要使用JFrame的具體要求是什麼?

一個操作會產生JFrame2和一個用戶「執行某些操作」,影響JFrame1中列表中的數據。關閉JFrame2後,有沒有辦法根據JFrame2的關閉事件來控制JTable?

這是一個常見的設計。用戶選擇要更改或更新的行,並創建模型對話框以顯示所有數據以便更改。當保存對話框時,表中的數據被更新。如果這是您的要求,那麼您可以將TableModel傳遞給對話框。然後,當對話框關閉時,更新TableModel,表格將自動重新繪製。

+0

針對這個問題,「爲什麼?」:說實話,在這一點上需要大量的重新分解。儘管當我有更多時間時,我並不害怕這樣做,但我有一些限制,如果現有設計有能力,則可以使用現有設計。謝謝你的回覆。我發現他們都很有見地。 – attach 2010-11-22 19:32:46

0

您將不得不使用窗口監聽器捕獲窗口關閉事件。窗口監聽器還需要對需要更改的數據的引用。

0

除了在JFrame或JDialog上使用Window.addWindowListener()之外,還應考慮使用模型視圖方法。關閉事件修改表的數據,而不是表本身。使用AbstractTableModel作爲表格的模型,並監聽數據的更改。