簡體   English   中英

什么是sun.awt.windows.WToolkit?

[英]What is sun.awt.windows.WToolkit?

我有以下代碼

import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
import javax.swing.*;
class QueueTest {
static int i=0;
    public static void main(String[] args) throws InterruptedException, 

InvocationTargetException {
        EventQueue eventQueue = 

Toolkit.getDefaultToolkit().getSystemEventQueue();
        eventQueue.push(new MyEventQueue());


    Frame f=new Frame();
    f.setSize(400,400);
    //f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setLocation(150,150);
    f.setLayout(new FlowLayout());
    f.setVisible(true);

    Button b=new Button("button");
    //b.setEnabled(false);
    f.add(b);
/*
    b.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae)
        {
        System.out.println("button is clicked");
        }
    });
*/
    }

    private static class MyEventQueue extends EventQueue {
        public void postEvent(AWTEvent theEvent) {
//            System.out.println("Event Posted");
  System.out.println("The source of event is "+theEvent.getSource());
            super.postEvent(theEvent);
        }

    protected void dispatchEvent(AWTEvent event)
    {
    System.out.println("The source of event ("+(i++)+") is 

"+event.getSource());
    super.dispatchEvent(event);
    }
    }
}

在輸出中我有時可以看到

The source of event is (78) sun.awt.windows.WToolkit@77ef83

當我認為我只有兩個源時,即java.awt.Buttonjava.awt.Frame 同樣,當我按下鼠標時,我可以看到正在生成兩個事件,其中一個是sun.awt.windows.WToolkit是源,另一個是Button (當我單擊button時)。

我的問題是

  1. 什么是sun.awt.windows.WToolkit?
  2. 為什么一次按下鼠標就能看到兩個事件?

名稱不言而喻: AWT代表“ 抽象窗口工具箱” ,這意味着該Toolkitabstract ,需要實際的實現。 sun.awt.windows.WToolkitMicrosoft Windows平台的此類實現,因此其名稱為W 在其他操作系統上,您將看到不同的實現,例如Linux上的 sun.awt.X11.XToolkit 如果您只是執行System.out.println(Toolkit.getDefaultToolkit()); 您將看到Toolkit的字符串表示與您不時看到的事件源的字符串表示匹配。

我建議您print整個事件,而不只是源。 然后,您將看到這些事件的用途。 您將看到該工具包生成什么樣的事件。 您會發現鼠標單擊最多可以產生三個事件:一個事件是按下,一個事件是釋放,如果按下和釋放發生在同一位置,則該事件被視為單擊

您正在使用*字符實現所有庫。 因此,輸出指定了事件源發生的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM