Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  JDialog always on top, ei tööta kui teine rakendus on parajasti aktiivne märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
matis
HV kasutaja
matis

liitunud: 12.04.2004




sõnum 05.06.2010 01:41:49 JDialog always on top, ei tööta kui teine rakendus on parajasti aktiivne vasta tsitaadiga

Programm peaks avama JDialog akna ja see aken peaks alati avanema kõige peal.
Kui Java rakendus on parajasti aktiivne, siis see funktsionaalsus töötab ilusti. Aga kui mul on aktiivne mõni teine programm näiteks Firefox, iTunes vms siis Always On Top ei tööta.
Kas keegi teab kuidas saaks teha nii, et JDialog aken alati kuvataks kõige peal, ka siis kui ma näiteks parajasti internetis surfan?
Näidiskood on allpool.

java:
  1.  
  2.             JFrame mainFrame = App.getApplication().getMainFrame();
  3.             final JDialog iBox = new AboutBox(mainFrame);
  4.             iBox.setModal(false);
  5.             iBox.setFocusable(true);
  6. //            iBox.setFocusableWindowState(true);
  7. //            iBox.requestFocusInWindow();
  8.             iBox.setLocationRelativeTo(mainFrame);
  9.             iBox.setAlwaysOnTop(true);
  10.             System.out.println("ontop=" + Toolkit.getDefaultToolkit().isAlwaysOnTopSupported());
  11.         Timer closer = new Timer(5000, new ActionListener() {
  12.             public void actionPerformed(ActionEvent e) {
  13.                 iBox.dispose();
  14.             }
  15.         });
  16.         closer.setRepeats(false);
  17.         closer.start();
  18.  

_________________
https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html
Kommentaarid: 64 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
i8080
Kreisi kasutaja
i8080

liitunud: 15.03.2002



Autoriseeritud ID-kaardiga

sõnum 05.06.2010 11:44:42 vasta tsitaadiga

ma pole ise seda .setAlwaysTop meetodit kasutanud, kuid koodi peale vaadates tundub, et selle tähenduseks on olla top tema parenti, ehk antud juhul selle mainFrame suhtes.
see iBox paistab olevat childwindow minu arust.
ja kas üldse polnud mitte nii, et topmost window teiste programmide (firefox jne) suhtes saab olla vaid see aken mis on ise parent window...

ise oleksin kasutanud hädakorral (win32 puhul), kui muidu välja ei vea, jna ja vastavaid dll fukntsioonide otse väljakutsumist , et teha kindlaks akna handle ja siis panna sellele aknale külge style WS_EX_TOPMOST
Kommentaarid: 169 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 151
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
matis
HV kasutaja
matis

liitunud: 12.04.2004




sõnum 05.06.2010 13:18:12 vasta tsitaadiga

Kui ma antud JDialog aknale parentit ette ei anna, siis ta alwaysOnTop ei püsi

EDIT: Ise küsin ise vastan. Järgnev kood annab mulle soovitud käitumise:
JDialog ise tuleb alati nähtavale, ka siis kui parajasti surfan Firefoxis ning Parent frame võtsin konstruktorist maha, siis ei tõmma alwayOnTop parent windowd endaga kaasa ja kuvab ainult pisikese infoakna.
Triki tegi ära iBox.setVisible(true)

java:
  1.             infoBoxes = new ArrayList<JDialog>();
  2.             bottomPanel.setVisible(true);
  3.             JFrame mainFrame = App.getApplication().getMainFrame();
  4.             final JDialog iBox = new AboutBox();
  5.             iBox.setModal(false);
  6.             iBox.setVisible(true);
  7.             iBox.setFocusable(true);
  8.             iBox.setLocationRelativeTo(mainFrame);
  9.             iBox.setAlwaysOnTop(true);
  10.             System.out.println("ontop=" + Toolkit.getDefaultToolkit().isAlwaysOnTopSupported());
  11.         Timer closer = new Timer(5000, new ActionListener() {
  12.             public void actionPerformed(ActionEvent e) {
  13.                 iBox.dispose();
  14.             }
  15.         });
  16.         closer.setRepeats(false);
  17.         closer.start();
  18.  

_________________
https://www.e-abi.ee/ - Pangalingid, Smartposti, Post24 moodulid, Järelmaksumoodulid. Magento, Prestahop, Wordpress. Aktsepteerin Bitcoini!
Soovid lisada oma tooteid HinnaVaatlusesse? https://www.e-abi.ee/magento/kasulikud/product-exporter-and-multi-product-feed-generator-hinnavaatlus.html
Kommentaarid: 64 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 60
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  JDialog always on top, ei tööta kui teine rakendus on parajasti aktiivne
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.