[英]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.Button
和java.awt.Frame
。 同樣,當我按下鼠標時,我可以看到正在生成兩個事件,其中一個是sun.awt.windows.WToolkit
是源,另一個是Button
(當我單擊button時)。
我的問題是
名稱不言而喻: AWT
代表“ 抽象窗口工具箱” ,這意味着該Toolkit
是abstract
,需要實際的實現。 sun.awt.windows.WToolkit
是Microsoft Windows平台的此類實現,因此其名稱為W
在其他操作系統上,您將看到不同的實現,例如Linux上的 sun.awt.X11.XToolkit
。 如果您只是執行System.out.println(Toolkit.getDefaultToolkit());
您將看到Toolkit
的字符串表示與您不時看到的事件源的字符串表示匹配。
我建議您print
整個事件,而不只是源。 然后,您將看到這些事件的用途。 您將看到該工具包生成什么樣的事件。 您會發現鼠標單擊最多可以產生三個事件:一個事件是按下,一個事件是釋放,如果按下和釋放發生在同一位置,則該事件被視為單擊 。
您正在使用*字符實現所有庫。 因此,輸出指定了事件源發生的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.