Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Focus palaa takaisin itsestään

Tepi_78 [18.10.2013 13:43:11]

#

Toteutan toimintoa, joka vaihtaa aktiivista ikkunaa näppäinyhdistelmällä Ctrl + W. Käytän setSelected()-funktiota aktiivisen ikkunan valinnassa.

Toiminto toimii, mutta jostakin käsittämättömästä syystä alkuperäinen ikkuna palaa takaisin aktiiviseksi välittömästi vaihdon jälkeen, jos focus on JInternalFrame-ikkunalla. Jos taas focus on ikkunan alikomponentilla, esim. JPanelilla, jolla on oma näppäinkuuntelijansa, ikkunan vaihto toimii ongelmitta.

Mitä ihmettä? Miksi java palauttaa itsestään alkuperäisen ikkunan aktiiviseksi?

Tepi_78 [21.10.2013 09:06:41]

#

Jostain syystä java alkaa kulkea seuraavanlaista polkua ikkunan valinnan jälkeen ja vaihtaa alkuperäisen ikkunan takaisin aktiiviseksi:

java.awt.Component.firePropertyChange(Unknown Source)
java.­be­ans.P­ro­per­ty­Chan­ge­Support.­fi­re­Proper­ty­Change(Unknown Source)
java.­be­ans.P­ro­per­ty­Chan­ge­Support.­fi­re­Proper­ty­Change(Unknown Source)
java.beans.PropertyChangeSupport.fire(Unknown Source)
javax.swing.plaf.basic.BasicInternalFrameUI­$Handler.propertyChange(Unknown Source)
javax.s­wing.p­laf.­ba­sic.­Ba­sic­Inter­nal­Frame­UI.ac­ti­va­te­Frame(Unknown Source)
javax.swing.DefaultDesktopManager.activateFrame­(Unknown Source)
javax.swing.JInternalFrame.setSelected(Unknown Source)
javax.s­wing.­JIn­ter­nal­Frame.­fi­re­Inter­nal­Frame­Event(Unknown Source)

Tepi_78 [22.10.2013 14:47:06]

#

Itse itselleni vastaten:

En sitten tiennyt, että Javassa on olemassa ctrl + w -ikkunanvaihto. Se tuli käyttöön kun poistin focuksen siirron pois päältä, setFocusTraversalKeysEnabled(false), ja vaihtoi alkuperäisen ikkunan takaisin vaihdettuani ikkunaa manulaalisesti koodissa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta