Hallo, ich habe ein Unterprogramm geschrieben, welches anhand der Dauer des Drückens einer Taste der Tastatur oder Mouse einen Punkt oder Strich oder nix ausgibt.
Allerdings habe ich das mit festen Werten gemacht, so dass die Eingabe abhängig davon ist.
Nun wird gefordert, dass die Analyse nicht von diesen festen Werten abhängig ist, sondern flexbil reagiert.
Kein Ahnung wie ich das auch nur ansatzweise umsetzen soll.
Aufgabe lautet:
Geschwindigkeitsvorgaben beim Morsen mittels Maus oder Tastatur.
Auch hier sollte sich die Analyse der Geschwindigkeit der Eingabe anpassen und nicht
fest vorgegebene Werte verwenden.
Allerdings habe ich das mit festen Werten gemacht, so dass die Eingabe abhängig davon ist.
Nun wird gefordert, dass die Analyse nicht von diesen festen Werten abhängig ist, sondern flexbil reagiert.
Kein Ahnung wie ich das auch nur ansatzweise umsetzen soll.
Aufgabe lautet:
Geschwindigkeitsvorgaben beim Morsen mittels Maus oder Tastatur.
Auch hier sollte sich die Analyse der Geschwindigkeit der Eingabe anpassen und nicht
fest vorgegebene Werte verwenden.
Java:
package Listener;
import java.awt.event.*;
import javax.swing.*;
public class Test5 extends JFrame implements KeyListener, MouseListener{
private JTextField tf;
private JButton jbUebertrag;
private JButton jbNeu;
private String Ausgabetext;
private String returnString;
//private String returnString;
private boolean blRunning = false;
private long startTime;
private long lastKeyUp;
private long releaseKey;
private long pressKey;
public Test5() {
this.setLayout(null);
tf = new JTextField();
tf.setBounds(10,10,310, 30);
tf.setEditable(false);
tf.setFocusable(true);
Ausgabetext = new String();
this.add(tf);
//Buttons
jbUebertrag = new JButton("Übertrag");
jbUebertrag.setBounds(10, 50, 100, 30);
jbUebertrag.addActionListener(new ActionListenerUebertrag());
this.add(jbUebertrag);
jbNeu = new JButton("Neu");
jbNeu.setBounds(120, 50, 100, 30);
jbNeu.addActionListener(new ActionListenerNeu());
this.add(jbNeu);
//Listener
tf.addKeyListener(this);
tf.addMouseListener(this);
this.setSize(350, 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
class ActionListenerUebertrag implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
returnString = tf.getText().toString();
System.out.println("Uebergabe:" + returnString);
setRetString(returnString);
Test1.printReturnString(returnString);
}
}
class ActionListenerNeu implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String buttonText = e.getActionCommand();
if (buttonText.equals("Neu")) {
//Alles zurücksetzen
System.out.println("alles neu macht der mai");
Ausgabetext = "";
blRunning = false;
tf.setText(Ausgabetext);
}
}
}
protected void setRetString (String returnString) {
this.returnString = returnString;
System.out.println("ue" + returnString);
}
public String getretString() {
//String retStr = returnString;
return returnString;
}
@Override
public void keyPressed(KeyEvent e) {
pressKey = System.currentTimeMillis();
if (!blRunning) {
try {
long relDur = pressKey-releaseKey;
interpretDur(relDur);
startTime = System.currentTimeMillis();
blRunning = true;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
@Override
public void keyReleased(KeyEvent e) {
lastKeyUp = System.currentTimeMillis();
try {
releaseKey = System.currentTimeMillis();
long lDuration = lastKeyUp - startTime;
blRunning=false;
interpretTone(lDuration);
} catch (Exception ex) {
ex.printStackTrace();
}
//tf.setText(text);
}
@Override
public void mousePressed(MouseEvent e) {
pressKey = System.currentTimeMillis();
if (!blRunning) {
try {
long relDur = pressKey-releaseKey;
interpretDur(relDur);
startTime = System.currentTimeMillis();
blRunning = true;
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
@Override
public void mouseReleased(MouseEvent e) {
lastKeyUp = System.currentTimeMillis();
try {
releaseKey = System.currentTimeMillis();
long ltDuration = lastKeyUp - startTime;
interpretTone(ltDuration);
blRunning=false;
} catch (Exception ex) {
ex.printStackTrace();
}
//tf.setText(text);
}
private void interpretDur(long relDur) {
// TODO Auto-generated method stub
if (relDur > 1200) {
Ausgabetext+= " ";
tf.setText(Ausgabetext);
}
}
private void interpretTone(long duration){
System.out.println(duration);
if (duration < 500 ) {
// Punkt einfügen
Ausgabetext += ".";
tf.setText(Ausgabetext);
System.out.println(Ausgabetext);
} else if (duration > 500){
// Strich einfügen
Ausgabetext += "-";
tf.setText(Ausgabetext);
System.out.println(Ausgabetext);
} else {
System.out.println("nix");
}
}
//KeyListener unbenutzt
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
//MouseListener unbenutzt
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//Test5 keyTest = new Test5();
Test5 keyTest = new Test5();
keyTest.setVisible(true);
}
}