11. juni 2003 - 16:10Der er
3 kommentarer og 1 løsning
Skift focus mellem textarea og popupmenu
Hej...
Jeg har endnu et spørgsmål omkring textareas og popups.
Jeg har lavet en gui, som indeholder et textarea hvortil det er tilføjet en popupmenu. Ideen er, at man skal indtaste tekst, og hvis der så er noget tekst registreret (i et binært træ) der passer med det netop indtastede, skal man præsenteres for de forslag der måtte være, i popupmenuen.
Det skal siges at det er keyevents, som får popupmenuen til at fremkomme. Jeg har haft et ønske om at brugeren skal bruge musen mindst muligt, og vil derfor gerne give mulighed for at styringen i videst muligt omfang ligger hos keyboardet.
Hvis der i træet er registreret billig og bisse | -> så skal begge forslag fremkomme når jeg skriver 'bi', men kun billig når jeg skriver 'bil'
Ovenstående har jeg fået til at virke, men for at man ikke skal afvise popmenuen ved brug af 'esc' hver gang den fremkommer, og det gør den jo både når man skriver 'bi' og 'bil', har jeg ændret fokus til textarea, efter popmenuen er fremkommet, i stil med nedenstående :
popup.show( area, pos.x, (pos.y + 16) );
area.requestFocus();
Her kommer vi så til mit egentlige spørgsmål. Er det muligt at ændre fokus tilbage til popupmenuen, f.eks. ved at have en tast (f.eks. KeyEvent.VK_F2) som udførte noget i stil med:
popup.requestFocus();
Så man på den måde kunne, trykke F2, og komme ind i popup-menuen og så accepterer med 'Enter' eller 'Space', jf. Javas L&F (C:\Documents and Settings\Kristoffer\Skrivebord\Shortcuts\Dokumentation java 2\api\index.html)
Jeg ved ikke om du har fået det til at virke, ellers er der en løsning her.
NB: Læs lige mine kommentarer, inden du propper det ind !
Følgende metode skal ligge i din JFrame: public java.awt.KeyEventDispatcher createKeyEventDispatcher(){
Tilføj følgende i constructoren på din JFrame: keyBoard();
// Metoden som viser din Popup (har lavet den, da jeg // er klar over hvordan du styrer det, og så er det // sandsynligvis nemmere for dig at bygge det ind i din kode) private void visMinPopup(){ popup.show(area, pos.x, (pos.y + 16) ); }
public void keyBoard() { java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager(). addKeyEventDispatcher(createKeyEventDispatcher()); }
// Nedenstående skal bare ligge i selve din JFrame // så skulle det virke ! public java.awt.KeyEventDispatcher createKeyEventDispatcher(){ return new java.awt.KeyEventDispatcher(){ public boolean dispatchKeyEvent(java.awt.event.KeyEvent e){
Undskyld den lange ventetid - skulle til eksamen og alt stod derfor stille.
Er lidt udbrændt lige nu, så jeg håber jeg kan stille spørgsmål igen, hvis jeg ikke kan få det til at virke, når jeg får set ordenligt på det.
Takker mange gange for jeres svar!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.