Servus,
ich schreibe mittels Robot Text in die Eingabefelder eines anderen Programms.
Dabei bleibt mein Programm on top
super.setAlwaysOnTop(true);
bis die Daten fertig sind.
Jetzt möchte ich es aber gerne einrichten das man mittels ESC order irgendwie anders den Thread bzw die Methode die dadurch aufgerufen wird abbrechen kann.
Jetzt dachte ich mir impementierst Du KeyListener in den Thread
Methode
Aber es wird weder auf ESC reagiert wo ich versucht habe das ganze Programm zu beenden noch auf das Bewegen der Maus an den Rand was ich auch versucht habe um die Schleife zu beenden.
Hat jemand eine Idee ?
EDIT: Sehe gerade das die Abfrage der Mausposition vollkommen falsch ist ^^ Aber die Eigentlich Frage war ja nach dem KeyListener, mit
komme ich jetzt auch raus aus der Schleife
ich schreibe mittels Robot Text in die Eingabefelder eines anderen Programms.
Dabei bleibt mein Programm on top
super.setAlwaysOnTop(true);
bis die Daten fertig sind.
Jetzt möchte ich es aber gerne einrichten das man mittels ESC order irgendwie anders den Thread bzw die Methode die dadurch aufgerufen wird abbrechen kann.
Jetzt dachte ich mir impementierst Du KeyListener in den Thread
Java:
public class AddContactViaThread extends Thread implements KeyListener {
public AddContactViaThread(){
start();
}
public void run(){
try {
addContact();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
System.exit(0);
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
Methode
Java:
private void addContact() throws AWTException {
Robot bot = new Robot();
// detect the click position
int addX = this.getX()-5;
int addY = this.getY()-5;
super.setAlwaysOnTop(true);
List<Calls> allCalls = this.arrayListCalls.stream()
.distinct()
.sorted(Comparator.comparing(Calls::getCallsignName))
.collect(Collectors.toList());
int iii = 0;
for (Calls entry : allCalls){
iii++;
//bot.delay(100);
if(this.getX()== 0) break;
if(this.getY()== 0) break;
// Code gekürzt
}
super.setAlwaysOnTop(false);
JOptionPane.showMessageDialog(null, iii + " User-Import finished.");
}
Aber es wird weder auf ESC reagiert wo ich versucht habe das ganze Programm zu beenden noch auf das Bewegen der Maus an den Rand was ich auch versucht habe um die Schleife zu beenden.
Hat jemand eine Idee ?
EDIT: Sehe gerade das die Abfrage der Mausposition vollkommen falsch ist ^^ Aber die Eigentlich Frage war ja nach dem KeyListener, mit
Java:
if(MouseInfo.getPointerInfo().getLocation().getX()== 0) break;
if(MouseInfo.getPointerInfo().getLocation().getY()== 0) break;
Zuletzt bearbeitet: