Avatar billede cvpcvp Nybegynder
01. marts 2004 - 09:51 Der er 2 kommentarer og
1 løsning

Brug af keylistener i Eclipse

Jeg er ved at udvikle et plugin til eclipse, og står nu med det problem at jeg ikke kan få en KeyListener til at virke. Jeg kan få både MouseListener og PaintListener til at virke men af en eller anden grund vil keyListerner ikke virke.

Jeg har følgende kode: ( funktion i en multipage editor)

void createPage1() {
       
        System.out.println("inde i createPage1");
        final Composite composite = new Composite(getContainer(), SWT.NONE);
        GridLayout layout = new GridLayout();
        composite.setLayout(layout);
        layout.numColumns = 2;

        composite.addPaintListener(new PaintListener () {
            public void paintControl(PaintEvent event){
                GC gc = event.gc;
                           
            Display disp = composite.getDisplay();   
               
            gc.drawLine(0,0,200,200);
            gc.drawLine(0,10,200,200);
           
            Image grafen = new Image(disp,"c:\\temp\\billed1.jpg");
            gc.drawImage(grafen,xpos-100,ypos-102);
           
            double tempx, tempy;
            int r = 100;    // radius
            tempx = ((java.lang.Math.sin(valueOfGraf)*r)+xpos);
            tempy = (ypos-(java.lang.Math.cos(valueOfGraf)*r));
            gc.drawLine(xpos , ypos, (int)tempx, (int)tempy);
            gc.drawLine(xpos+1 , ypos, (int)tempx+1, (int)tempy);
                               
            }
        });       
       
       
        composite.addMouseMoveListener(new MouseMoveListener (){

                public void mouseMove(MouseEvent e) {
               
                    System.out.println("mouse moved");
               
                }}
        );
       
        composite.addKeyListener(new KeyListener(){

            public void keyPressed(KeyEvent evt) {
               
                System.out.println("keyPressed");
                if (evt.character == 'e')
                {
                    System.out.println("trykket på e");
                    valueOfGraf += 0.01;
                }
                else if (evt.character == 'q')
                {
                    System.out.println("trykket på q");
                    valueOfGraf -= 0.01;
                }
               
            }
            public void keyReleased(KeyEvent evt) {
           
                System.out.println("keyReleased");
                if (evt.character == 'e')
                {
                    System.out.println("trykket på e");
                    valueOfGraf += 0.01;
                }
                else if (evt.character == 'q')
                {
                    System.out.println("trykket på q");
                    valueOfGraf -= 0.01;
                }
            }
        });
       
        composite.addMouseListener(new MouseListener(){

            public void mouseDoubleClick(MouseEvent e) {
                System.out.println("doubleclick");
            }

            public void mouseDown(MouseEvent e) {
                System.out.println("MouseDown");
            }

            public void mouseUp(MouseEvent e) {
                System.out.println("MouseUp");               
            }
       
        });
       
        Button fontButton = new Button(composite, SWT.NONE);
        GridData gd = new GridData(GridData.BEGINNING);
        gd.horizontalSpan = 2;
        fontButton.setLayoutData(gd);
        fontButton.setText("Change Font...");
       
        fontButton.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent event) {
                setFont();
            }
        });
Avatar billede saxtus Nybegynder
09. marts 2004 - 10:26 #1
jeg ved ikke om det her kan hjælpe lidt - har ikke prøvet det i Eclipse

TasteHandler tasteHandler = new TasteHandler();

private class TasteHandler extends KeyAdapter{
  public void keyPressed(KeyEvent e){
    if(e.getKeyCode() == KeyEvent.VK_F3){
      opret();
    }
    if(TvareNr.hasFocus()){
      if(e.getKeyCode() == KeyEvent.VK_ENTER){
        Tantal.grabFocus();
      }
    }
    else if(Tantal.hasFocus()){
      if(e.getKeyCode() == KeyEvent.VK_ENTER){
        Clocation.grabFocus();
      }
    }
    else if(Clocation.hasFocus()){
      if(e.getKeyCode() == KeyEvent.VK_ENTER){
        SælgVare.hentInstans().ordreLinie();
      }
    }
  }
}
Avatar billede cvpcvp Nybegynder
09. marts 2004 - 13:26 #2
kan ikke helt forstå det du har skrevet det virker mig noget rodet. det er en masse forskellige funktion du har med.
Jeg har selv kigget lidt på det! Har fundet ud af at det er den øverste komponent der får alle keyEvents, det var derfor min listener ikke fik keyEvents.
Avatar billede cvpcvp Nybegynder
16. marts 2004 - 08:04 #3
jeg lukker lige...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester