Avatar billede stig3 Mester
31. oktober 2001 - 11:18 Der er 3 kommentarer og
1 løsning

getKeyCode

Jeg vil gerne checke om der bliver trykket på enter og hvis det er tilfældet gøre XX, men jeg kan ikke få det til at virke:

import javax.swing.JTextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Point;

public class TextField extends JTextField {
    static Conference conf;
    static Point place;
 
    public TextField(int cols, Point to, Conference c) {
        super(cols);
       
        place = to;
        conf = c;
       
        //Keyboardlistener
        addKeyListener(new KeyAdapter()    {
              String text = \"\";
              public void keyTyped( KeyEvent e){
                  if (true){
                  //if ( e.getKeyCode() == KeyEvent.VK_ENTER ){
                      System.out.println(\"\\nVK_ENTER: \"+KeyEvent.VK_ENTER+\"\\nKeyCode: \"+e.getKeyCode());
                    char c = e.getKeyChar();
                      text += c;
                     
                      try{
                          Text finalText = new Text(text, place);
                                                 
                          Command drawText = new DrawCommand( finalText );
                          //Notify the server and the other clients
                          conf.send(drawText);
                      }catch( java.rmi.RemoteException ex )
                    {
                        ex.printStackTrace();
                    }
                  }
                  else{
                      char c = e.getKeyChar();
                      text += c;
                  }
              }         
          });
    }
}


Jeg har lavet min if-sætning om så jeg er sikker på at den kommer ind. Det den udskriver er:

VK_ENTER: 10
KeyCode: 0

uanset hvilken tast jeg trykker på (inklusiv enter)

Hvad gør jeg galt ????
Avatar billede carstenknudsen Nybegynder
31. oktober 2001 - 11:37 #1
Hvis du kun er interesseret i at fange en Enter
kommando er det meget lettere at lave en
ActionListener, den fanger kun Enter event\'en
på dit teksfelt.  Hvis du vil kunne fange andre
key events er dette ikke sagen.

public MyTextField extends JTextField implements ActionListener {
public MyTextField() {
...
addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
..// gør hvad der skal gøres hvis Enter er tastet
}
}
Avatar billede stig3 Mester
31. oktober 2001 - 11:43 #2
Man skal også kunne skrive en tekst. Det er det der er formålet med TextField\'et.
Avatar billede carstenknudsen Nybegynder
31. oktober 2001 - 12:20 #3
Du kan altid skrive i tekstfeltet, det har ikke noget
med ActionListener\'en.  Du kan skrive på helt
normal vis.
Avatar billede stig3 Mester
31. oktober 2001 - 12:51 #4
Måske har du ret, men jeg skal skrive på et canvas og TextField er bare en popup-ting........

Jeg fandt ud af det på anden vis:
import javax.swing.JTextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Point;

public class TextField extends JTextField {
    static Conference conf;
    static Point place;
 
    public TextField(int cols, Point to, Conference c) {
        super(cols);
       
        place = to;
        conf = c;
       
        //Keyboardlistener
        addKeyListener(new KeyAdapter()    {
              String text = \"\";
              public void keyTyped( KeyEvent e){
                  String s = e.getKeyChar()+\"\";
                 
                  //value: -87=Enter, -89=Backspace
                  int value = s.compareTo(\"a\");
                                   
                  //Enter
                  if (value==-87){
                      try{
                          Text finalText = new Text(text, place);
                                                 
                          Command drawText = new DrawCommand( finalText );
                          //Notify the server and the other clients
                          conf.send(drawText);
                      }catch( java.rmi.RemoteException ex )
                    {
                        ex.printStackTrace();
                    }   
                  }
                 
                  //BackSpace
                  else if (value==-89){
                      text = text.substring(0, text.length()-1);
                  }
                 
                  //TextKey
                  else{
                    char c = e.getKeyChar();
                      text += c;
                  }
                 
              }         
          });
    }
}

Det virker i hvert fald, men tak for hjælpen.
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