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)
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 } }
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.
Synes godt om
Ny brugerNybegynder
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.