PelleP Skrevet 12. juni 2014 Del Skrevet 12. juni 2014 Jeg driver å leker meg med GUI og jeg ønsker at enkelte funksjoner skal kunne startes enten ved å trykke på en JButton eller en tast. Man kan jo da ha både en ActionListener og en Kyelistener som sparker igang de samme funksjonene, men det blir ganske tungvint. Er det en måte å få en ActionListener som kan kodes noe i stil med: if(e.getSource() == enEllerAnnenJButton || e.getSource() == enEllerAnnenTast) { funksjon(); } ... eller noe lignende slik at jeg slipper å lage "if - else if - else" for tastatur og JButtons hver for seg. Lenke til kommentar
Karl Skapeland Skrevet 25. juni 2014 Del Skrevet 25. juni 2014 (endret) Du kan jo lage en hjelpemetode, som tar et EventObject som første argument, og kildene du vil sammenligne med, som en "variable-lengt argument list". public boolean blabla(EventObject e, Object... sources) { for (Object source : sources) { if (source.equals(e.getObject()) { return true; } } return false; } Så kunne den kalles slik: if (blabla(e, enEllerAnnenJButton, enEllerAnnenTast)) { // Do something } Endret 25. juni 2014 av Karl Skapeland Lenke til kommentar
PelleP Skrevet 10. juli 2014 Forfatter Del Skrevet 10. juli 2014 Takk for svar, men jeg må bare innrømme at det her skjønte jeg ikke så mye av. Hva er det meningen at den hjelpemetoden egentlig skal gjøre? Jeg har for øvrig funnet denne internettsiden http://www.herongyang.com/Swing/JMenuBar-Set-Keyboard-Mnemonics-on-Menu-Items.html Den ser ut til å beskrive en løsning som jeg kanskje kan få tid til å se på i helgen. Lenke til kommentar
blackbrrd Skrevet 10. juli 2014 Del Skrevet 10. juli 2014 Det du vil ha er noe lignende den koden jeg har nedenfor her. (Koden for actionListener er relativt riktig, men husker ikke syntaxen for KeyListener, så den er garantert feil. Konseptet fungerer fint da. JButton button = new JButton(); button.addActionListener(new Actionlistener() { public void actionPerformed(ActionEvent e) { whatever(); } }); button.addKeyListener(new Keylistener() { public void actionPerformed(KeyEvent e) { whatever(); } }); Hvis det du egentlig er ute etter er at du kan ha en hurtigtast for knappen, så skal du bruke setMneomic metoden på knappen. Du kan da f.eks trykke Ctrl+[angitt tast] for å trigge et actionevent på knappen. Lenke til kommentar
Karl Skapeland Skrevet 11. juli 2014 Del Skrevet 11. juli 2014 Takk for svar, men jeg må bare innrømme at det her skjønte jeg ikke så mye av. Hva er det meningen at den hjelpemetoden egentlig skal gjøre? Hjelpemetoden gjør akkurat det samme som if-strukturen i ditt opprinnelige innlegg, men med en mer kompakt syntaks, som du etterlyste. Lenke til kommentar
PelleP Skrevet 12. juli 2014 Forfatter Del Skrevet 12. juli 2014 Jeg skjønner at mitt spørsmål var særdeles dårlig formulert, men balckbrrd har skjønt allikevel. Jeg ønsket egentlig å en metode for hurtigtaster. Jeg skal sjekke ut setMneomic-metoden. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå