Toon posts:

[JAVA] focus op een Canvas

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een figuurtje waarmee ik kan rondlopen op een canvas. Maar het probleem is dat je eerst op het canvas moet klikken voordat je kan rondbewegen met het figuurtje.

Ik heb gedaan:

canvas.requestfocus() Maar dan moet je dus eerst klikken op het canvas.


Is er geen manier om te zorgen dat er automatisch wordt gefocused op het canvas? (dus dat je meteen kan beginnen met rondlopen zonder dat je eerst op het canvas moet klikken..)
Heb al een beetje zitten rondkijken op java.sun.com, maar ik kan nog niks vinden.

Alvast bedankt.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

heeft canvas geen methode toFront() oid ?

  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 23:00
Je zou een requestfocus aan kunnen roepen als je een toets indrukt om het figuurtje te laten bewegen.

Groetjes


Verwijderd

Topicstarter
ik heb het geprobeerd, maar canvas kent geen toFront(). :?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je zou het canvas als default focus component in kunnen stellen (of kan dat alleen in Swing?) .

Maar waarom ga je dan uberhaupt pas bewegen nadat er focus is?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Op vrijdag 02 november 2001 13:04 schreef mbravenboer het volgende:
Je zou het canvas als default focus component in kunnen stellen (of kan dat alleen in Swing?) .

Maar waarom ga je dan uberhaupt pas bewegen nadat er focus is?
Hoe wil je dat anders doen? Je moet toch eerst op een canvas focussen voordat je wat kan doen met keylisteners op dat canvas??

Werkt trouwens niet met Swing..

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Das waar, maar ik had niet begrepen dat je de animatie moet besturen.

Voeg dit anders eens aan de canvas toe als ComponentListener. Dit is een hele makkelijke hack om de default focus in te stellen. Met de nieuwe focus architectuur kan dit mooier, maar goed. Dit werkt ook :) .
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;

import javax.swing.event.AncestorListener;
import javax.swing.event.AncestorEvent;

public class FocusRequester implements ComponentListener, AncestorListener
{
    public void componentHidden(ComponentEvent e) 
    {
    }

    public void componentMoved(ComponentEvent e) 
    {
    }

    public void componentResized(ComponentEvent e) 
    {
    }

    public void componentShown(ComponentEvent e)
    {
        e.getComponent().requestFocus();
    }

    public void ancestorAdded(AncestorEvent event)
    {
        event.getComponent().requestFocus();
    }

    public void ancestorMoved(AncestorEvent event) 
    {

    }

    public void ancestorRemoved(AncestorEvent event)  
    {

    }

}

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1