2015-11-30 28 views
1

假設我在同一應用程序中打開了各種JFrame。當用戶將焦點轉移到另一個框架上時(如點擊頂部欄),是否有辦法執行某些操作(如更新JTable)?Swing:對主JFrame執行操作

如果不是,當她關閉另一個JFrame時,是否有辦法在一個JFrame上執行操作?

回答

2

請閱讀:The Use of Multiple JFrames, Good/Bad Practice?明白爲什麼你的程序設計可以很好地改善

至於你的主要問題,

是否有執行某些操作(如更新一個JTable)時的方式用戶將焦點轉移到另一個框架上(如點擊頂部的欄)?

這的確是一個更普遍的問題的一個具體的例子:

如何通過發生在另一個對象

事件改變一個對象的狀態,並有幾個可能的解決方案

  • 最簡單的就是讓處理事件的代碼有一個對fi的引用第一個對象,這裏是你的一個JFrame,當事件被觸發時,只需調用它就可以了。
  • 更好的方法是用MVC(模型 - 視圖 - 控制器)類型結構構建程序,並在事件代碼(控制代碼)中更改模型的狀態。查看模型的偵聽器(包括您希望更改的JFrame),然後會通知並根據模型更改其外觀。

一些一般性的建議:

  • 有一堆顯示和交換的窗口是很煩人的用戶。看看我上面的鏈接,尋找其他可能的選擇。
  • 您可能希望避免讓類的擴展JFrame,因爲這會迫使您使用該代碼創建JFrame。對JPanel而不是JFrame進行編碼,然後將JPanel放置在任何需要的地方,可以放在JFrame中或其他JPanel中,或者通過CardLayout或JTabbedPane,JDialog,JOptionPane ...
+0

Thanks @MadProgrammer –