Gå til innhold

Kombinert ActiolnListener og Keylistener


Anbefalte innlegg

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
  • 2 uker senere...
Videoannonse
Annonse

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 av Karl Skapeland
Lenke til kommentar
  • 3 uker senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...