KeyListener fanger tastetrykket to gange.
Jeg er i gang med at lave en terminal til en ekstern enhed tilsluttet TCP/IP. Terminalen er lavet i en applet og siden indsat som del af et større projekt.Nu er der det problem, at når jeg skriver en kommando i vinduet opfanges hvert tastetryk to gange, sådan så der i stedet for help bliver sendt hheellpp afsted.
Tekst skrives i et textarea, og kommandoer opfanges tastetryk for tastetryk og sendes derefter afsted når der trykkes enter. Jeg er meget uforstående overfor hvad der sker?
Se kode:
private void jbInit() throws Exception {
this.setVisible(true);
this.setLayout(null);
input_box.setBackground(Color.black);
input_box.setFont(new java.awt.Font("DialogInput", 0, 12));
input_box.setForeground(Color.white);
input_box.setText("");
input_box.setBounds(new Rectangle(0, 25, 580, 500));
input_box.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ke) {
String input_letter = new String("");
if (ke.getKeyCode() == KeyEvent.VK_ESCAPE) {
gtp.send_escape();
}
if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
gtp.send(input_text);
System.out.println("Input_text: " + input_text);
gtp.send_enter();
}
if (ke.getKeyCode() == 8) {
input_text += "\b";
}
if (ke.getKeyCode() == 9) {
input_text += "\t";
}
if (ke.getKeyCode() == 32) {
input_text += " ";
}
if (ke.getKeyCode() > 41 && ke.getKeyCode() < 127) {
System.out.println(ke.getKeyChar());
System.out.println(ii + " - " + ke.getKeyCode());
//input_text += ke.getKeyText(ke.getKeyCode());
input_text += ke.getKeyChar();
ii++;
}
}
});
public void run() {
int i;
byte[] in;
Thread me = Thread.currentThread();
while (timer == me) {
try {
Thread.currentThread().sleep(2);
}
catch (InterruptedException e) { }
if ( (gtp != null) && ((i = gtp.available()) > 0) ) {
in = gtp.receive();
for (i = 0; i < in.length; i++) {
if (in[i] < 0x20 && in[i] != 0x0D && in[i]!= 0x0A){
//in[i] = 0x20;
}
}
if (!input_text.equals((new String(in)))){
input_box.append( (new String(in)));
input_text = "";
}
}
}
}
