第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我們需要在Java中重新定義窗口關閉方法?

為什么我們需要在Java中重新定義窗口關閉方法?

拉風的咖菲貓 2024-01-05 16:13:40
我需要知道為什么我們需要重新定義窗口關閉方法。我嘗試在網上查找任何答案,但找不到任何答案。// 沒有代碼有答案嗎?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

我認為這曾經是 AWT 的問題。


IIRC 這些類提供了一個不執(zhí)行任何操作的默認方法,您可以重載它 - 為了執(zhí)行諸如發(fā)送應用程序正在關閉的任何適當通知、保存任何未保存的數據、釋放您存儲的任何資源等操作等等等等。


從這個角度來看,這是有道理的??蚣懿恢滥陉P閉時要做什么,因此它為您的代碼提供了一個位置。


由于這個(或任何“為什么?”問題)有點哲學性,請允許我通過一個簡短的轉移來深入探討這個問題,它說明了解決同一問題的不同方法:


在 Mac 上,“代表”有相似但不同的概念。例如,我不會將 Window 子類化,而是將 Window 交給一個“Window-Lifecycle-Delegate-iser”,然后 api 將在發(fā)生時調用我的委托上的適當方法。


這在一定程度上對于 Mac 來說效果很好,因為 Objective-C 比 Java 更接近 Smalltalk 風格。特別是,您可以向對象發(fā)送一條消息(讀作:調用方法),如果該對象沒有說出該消息(讀作:該對象上沒有相應的方法),那么在 Objective-C 中,它就會無處可去,而在爪哇它卻尖叫著死去。


因此,在 Java 中,您必須實現(xiàn)接口上的每個方法,而對于 Objective-C,您只需執(zhí)行您真正關心的方法。因此,您可以創(chuàng)建一個大型 API,其中可能會對委托進行 50-100 次調用,并且您不會讓開發(fā)人員不知所措,因為他們可以忽略其中的 95-99%。


以下是 Java SE 教程中的一些代碼:


public class HelloWorldSwing {

/**

 * Create the GUI and show it.  For thread safety,

 * this method should be invoked from the

 * event-dispatching thread.

 */

  private static void createAndShowGUI() {

    //Create and set up the window.

    JFrame frame = new JFrame("HelloWorldSwing");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

所以在這里我們看到我們有這個方法,它創(chuàng)建一個 JFrame(一個奇特的窗口),然后立即指定當用戶嘗試退出時它希望應用程序的行為如何進行。在這種情況下,他們只是選擇批量標準選項。


EXIT_ON_CLOSE 不是唯一的選項,您可能會發(fā)現(xiàn)查看它們很有趣。


這很重要,因為稍后:


public static void main(String[] args) {

    //Schedule a job for the event-dispatching thread:

    //creating and showing this application's GUI.

    javax.swing.SwingUtilities.invokeLater(new Runnable() {

        public void run() {

            createAndShowGUI();

        }

    });

}

我們看到該應用程序正在其自己的線程內運行。


因此,在幕后,計算機有某種無限循環(huán)來保持 UI 的活力。這部分需要知道可以打破該循環(huán)并讓線程死亡。


(invokeLater、Runnable 和 run 都是我們在這里處理線程的線索:D)


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號