Archief - [PROG][JAVA] Action met een pijltjes

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

dobber_1987

Legacy Member
Je hebt een JViewport met een JPanel als view. Nu wil ik dat, als ik op de rechter-pijltjestoets klik, het JPanel verschuift. Dat verschuiven zal, veronderstel ik, met de methode setViewPosition(Point point) gebeuren.

Ik zit wat in de knoop met die ActionMap. In de constructor roep ik initActionMap op.

private void initActionMap () {
InputMap im = this.getInputMap();
im.put (KeyStroke.getKeyStroke ("UP"), "up");
im.put (KeyStroke.getKeyStroke ("DOWN"), "down");
im.put (KeyStroke.getKeyStroke ("LEFT"), "left");
im.put (KeyStroke.getKeyStroke ("RIGHT"), "right");
ActionMap am = getActionMap ();
am.put ("up", this.setViewPosition(new Point(this.getViewPosition().translate(0,-50))));
am.put ("down", this.setViewPosition(new Point(this.getViewPosition().translate(0,50))));
am.put ("left", this.setViewPosition(new Point(this.getViewPosition().translate(-50,0))));
am.put ("right", this.setViewPosition(new Point(this.getViewPosition().translate(50,0))));
}

Hij geeft hier de fout dat ik geen void mag gebruiken...maar dat slaagt toch nergens op? Doe ik iets mis?

Kn0t

Legacy Member
Als tweede argument van ActionMap.put moet je een Action object meegeven.
De this.setViewPosition(new Point(this.getViewPosition().translate(0,-50))) komt dan in de actionPerformed van die Action.

.Acku.

Legacy Member
of werken met anomynous inner classes zoals:

Code:
am.put ("up", new Action() {
   public void actionPerformed(ActionEvent e) {
      this.setViewPosition(new Point(this.getViewPosition().translate(0,-50))));
   }
 }
);
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan