Event
7 отговора
182 прегледа
Event
Kak moga da prihvana absoluitno vsi4ki eventi (kolkote e vazmojno po low level)koito se pra6tat kam JFrame. Triabva ma prosto da gi logn-a (6te mi svarshi rabota i da im otpe4atam Id-tata sas system.out.println)
Re: Event
в класа java.awt.Component има 1 метод
protected void processEvent(AWTEvent e)
тва ти треба
Johny Cage
------------------------------------------------
DOOM Will Never Die, Just The Players
protected void processEvent(AWTEvent e)
тва ти треба
Johny Cage
------------------------------------------------
DOOM Will Never Die, Just The Players
Re: Event
Добре, а възможно ли е да подавам low-level евенти към JFrame.
Общо взето ми трябват възможностите които дава Robot класа.
По точно да пращам mousePress, mouseMove, mouseRelease, keyPress и keyRelease евенти кам JFrame. Само че не искам да позвам Robot защото не желая да местя курсора на мишката в действителност или да натискам бутон. Мога ли някак си да симулирам тези евенти и да ги подам само към желания от мен JFrame(или някакъв друг контейнер ако се налага)?
Общо взето ми трябват възможностите които дава Robot класа.
По точно да пращам mousePress, mouseMove, mouseRelease, keyPress и keyRelease евенти кам JFrame. Само че не искам да позвам Robot защото не желая да местя курсора на мишката в действителност или да натискам бутон. Мога ли някак си да симулирам тези евенти и да ги подам само към желания от мен JFrame(или някакъв друг контейнер ако се налага)?
Re: Event
Predifinirah processEvent po slednia na4in:
protected void processEvent(AWTEvent e)
{
System.out.println(e.getID());
super.processEvent(e);
}
i tova mi podava samo tri eventa s id-ta: 205,200 pri startirane na application-a i 201 pri spiraneto mu
protected void processEvent(AWTEvent e)
{
System.out.println(e.getID());
super.processEvent(e);
}
i tova mi podava samo tri eventa s id-ta: 205,200 pri startirane na application-a i 201 pri spiraneto mu
Re: Event
Taka mozhesh da vidish vsichki events:
java.awt.Toolkit.addAWTEventListener
AWT grubo kazano raboti taka pod Windows:
AWT-Windows nishkata syzdava prozortzite i obrabotva sistemnite eventi (tova vkliuchva syzdavane na AWTEvent obekti na bazata na poluchenite sistemni eventi) na nisko nivo, sled koeto post-va v tekushtata EventQueue. AWT-EventQueue-0 nishkata gi izprashta do samite komponenti.
Niama nachin da vidish systemnite eventi osven ako ne pipash na mnogo nisko novo.
Mozhesh da probvash tova:
java.awt.Component.dispatchEvent(new MouseEvent(...))
no niamam predstava kakvo shte se poluchi.
java.awt.Toolkit.addAWTEventListener
AWT grubo kazano raboti taka pod Windows:
AWT-Windows nishkata syzdava prozortzite i obrabotva sistemnite eventi (tova vkliuchva syzdavane na AWTEvent obekti na bazata na poluchenite sistemni eventi) na nisko nivo, sled koeto post-va v tekushtata EventQueue. AWT-EventQueue-0 nishkata gi izprashta do samite komponenti.
Niama nachin da vidish systemnite eventi osven ako ne pipash na mnogo nisko novo.
Mozhesh da probvash tova:
java.awt.Component.dispatchEvent(new MouseEvent(...))
no niamam predstava kakvo shte se poluchi.
Re: Event
Probvah sas slednoto ne6to:
KeyEvent ke = new KeyEvent(this,401,0,0,39);
java.awt.Component.dispatchEvent( ke );
no polu4avam slednata gershka:
non-static method dispatchEvent(java.awt.AWTEvent) cannot be referenced from a static context at line 164 (164:24)
Men v kraina smetka me interesuva dali moga da pra6tam eventi kato tezi koito pra6ta Robot-a bez v deistvitelnost da mi marda kursora.
KeyEvent ke = new KeyEvent(this,401,0,0,39);
java.awt.Component.dispatchEvent( ke );
no polu4avam slednata gershka:
non-static method dispatchEvent(java.awt.AWTEvent) cannot be referenced from a static context at line 164 (164:24)
Men v kraina smetka me interesuva dali moga da pra6tam eventi kato tezi koito pra6ta Robot-a bez v deistvitelnost da mi marda kursora.
Re: Event
Estestveno che shte poluchish tazi "greshka". Triabva da imash instance na obekt za da vikash dispatchEvent.
KeyEvent ke = new KeyEvent(this,401,0,0,39);
new javax.swing.JFrame.dispatchEvent( ke );
KeyEvent ke = new KeyEvent(this,401,0,0,39);
new javax.swing.JFrame.dispatchEvent( ke );