java spuštění metody při nečinnosti
- Václav Sedlář
- Žlutá karta Bazar

-
- Registrován: 01. dub 2006
- Bydliště: Liberec
- Kontaktovat uživatele:
java spuštění metody při nečinnosti
Dobrý den, dělám jeden program v javě (používám graf.rozhraní,ne consoli...)....vše funguje,ale potřeboval bych nějak udělat, že když běží ten program a třeba 5 minut se nic neděje s PC (žádný pohyb s myší apod...), tak aby se spustila v tom programu nějaká metoda....je to vůbec možné nějak udělat?a jak?
Děkuji za pomoc...
P.S.: Program totiž dělám pro mamku a v tom programu mám tlačítko na "zamknutí" urč. fcí. toho programu, jenže mamka na to zapomíná a někdy odejde od PC a nechá ho odemčen...a k tomu potřebuju tu fci. aby udělala po x minutách nečinnosti to, co se stane při klepnutí na tlačítko pro uzamčení programu...
Děkuji za pomoc...
P.S.: Program totiž dělám pro mamku a v tom programu mám tlačítko na "zamknutí" urč. fcí. toho programu, jenže mamka na to zapomíná a někdy odejde od PC a nechá ho odemčen...a k tomu potřebuju tu fci. aby udělala po x minutách nečinnosti to, co se stane při klepnutí na tlačítko pro uzamčení programu...
- Stary88
- Nováček

-
- Registrován: 27. dub 2011
Re: java spuštění metody při nečinnosti
Nevim jestli je to jeste aktualni, ale reseni podle me neni slozite. Jestli to ma byt Desktopova aplikace jak jsem pochopil tak bych to resil asi takhle:
Na zacatek musi aplikace implementova tyto rozhrani:
...
...
Pri startu aplikace pridam na mainPanel Listenera:
...
...
pote jiz jen implementuju vsechny metody a vylam v nich jednu metodu kde se bude pocitat cas:
Po necinosti po dobu ktera je v podmince se vyvola metoda zamkni tod vse 
Na zacatek musi aplikace implementova tyto rozhrani:
...
Kód: Vybrat vše
implements MouseListener, Runnable...
Pri startu aplikace pridam na mainPanel Listenera:
...
Kód: Vybrat vše
mainPanel.addMouseListener(this);pote jiz jen implementuju vsechny metody a vylam v nich jednu metodu kde se bude pocitat cas:
Kód: Vybrat vše
public void mouseClicked(MouseEvent e) {
lastAction();
}
public void mousePressed(MouseEvent e) {
lastAction();
}
public void mouseReleased(MouseEvent e) {
lastAction();
}
public void mouseEntered(MouseEvent e) {
lastAction();
}
public void mouseExited(MouseEvent e) {
lastAction();
}
public void lastAction() {
if (!lock) {
lock = true;
cal = Calendar.getInstance();
timeStart = cal.getTimeInMillis();
Thread t = new Thread(this);
t.start();
}
}
public void run() {
while (true) {
try {
cal = Calendar.getInstance();
timeEnd = cal.getTimeInMillis();
if (timeEnd > timeStart + 5000) {
zamkni();
lock = false;
break;
}
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(DesktopApplication1View.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private void zamkni() {
System.out.println("Zamknul jsem");
}- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
while (true) {
....
Thread.sleep(100);
?!
....
Thread.sleep(100);
?!
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- Stary88
- Nováček

-
- Registrován: 27. dub 2011
Re: java spuštění metody při nečinnosti
Uznavam ze to asi neni uplne idealni, ale myslim ze zde zcela dostacujici. Vlakno se na chvili uspi, aby rezije cyklu while klesla co nejmin. Zalezi jak velky casovy usek se bude merit pokud pujde o minuty muzese se vklakno klidne uspat i na pul minuty. Ja osobne v tom nevidim problem...
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
Co třeba Timer v AWT a při každém eventu myši/klávesnice/... ho vyresetovat na 0?
(Javu neznám, takhle bych to řešil já v C#.)
A pak ještě system-wide hook, ale ten nevím, jestli vůbec v Javě jde, popř jestli obsahuje něco jako InterOP helpera jako .NET.
(Javu neznám, takhle bych to řešil já v C#.)
A pak ještě system-wide hook, ale ten nevím, jestli vůbec v Javě jde, popř jestli obsahuje něco jako InterOP helpera jako .NET.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- Stary88
- Nováček

-
- Registrován: 27. dub 2011
Re: java spuštění metody při nečinnosti
Druha moznost ktera me napadla byl prave Timer, ale zadany problem bych resil proste pomoci vlakna a whilu. Urcite je vice moznosti jak si s tim poradit a ja zvolil tuto a stojim si za ni 
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
Já bych stál za timerem - už jen proto, že by měl (pokud není Java VM implementován ještě hůře, než vypadá) používat systémový časovač a během čekání využívat přesně 0% procesoru
. Cokoliv s while(true) a Thread.Sleep() bude něco žrát a ubírat režiji ostatním aplikacím.
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- arxeiss
- Začátečník

- Registrován: 19. črc 2008
- Bydliště: Krmelín (předměstí Ostravy)
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
Nechci se hádat, ale myslím Thread.Sleep() bude taky využívat systémové časovače. Přece jenom o to, který proces apod... příjde na řadu, o tom rozhoduje systém, proto myslím, že využívá časovače.
Jina while(true) ani náhodou, viz výše
Jina while(true) ani náhodou, viz výše
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
- OndraSter
- Středně pokročilý

- Registrován: 22. úno 2006
- Bydliště: Praha / ČVUT FIT
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
Thread.Sleep ano, ale ta kontrola kolem ve while(true) bude požírat CPU 
PC: i5-2500k 4.5GHz/24GB RAM/GTX560 Ti 1GB/>5TB - W7 Prof x64; Microsoft SideWinder X3 notebook: HP 6715b (4GB RAM) - W7 Prof x64;
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
mobil: Nokia Lumia 800 Cyan, 16GB; tablet: Toshiba Portege M200 (2GB, 64GB SSD, GeForce FX5200) - W7 Prof x32
Nahraďte Arduino výkonnější variantou!
Vývojová prostředí a nástroje | Webové prohlížeče | Seznam freehostingů
- Václav Sedlář
- Žlutá karta Bazar

-
- Registrován: 01. dub 2006
- Bydliště: Liberec
- Kontaktovat uživatele:
Re: java spuštění metody při nečinnosti
jů díky za odpovědi...hned jak se k tomu dostanu tak budu zkoušet...