Closes #6 (Keybord Input)

This commit is contained in:
ngb
2022-01-06 22:21:02 +01:00
parent 6c742415d1
commit ae93ae71bc

View File

@@ -48,18 +48,25 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
protected double mouseX = 0.0, mouseY = 0.0, pmouseX = 0.0, pmouseY = 0.0; protected double mouseX = 0.0, mouseY = 0.0, pmouseX = 0.0, pmouseY = 0.0;
protected boolean mousePressed = false;
protected int mouseButton = 0;
protected char key = ' ';
protected int keyCode = 0;
protected boolean keyPressed = false;
protected int width, height; protected int width, height;
protected int screenWidth, screenHeight; protected int screenWidth, screenHeight;
/* /*
* Interne Attribute zur Steuerung der Zeichenmaschine. * Interne Attribute zur Steuerung der Zeichenmaschine.
*/ */
private Object mouseLock = new Object();
private Object keyboardLock = new Object();
private JFrame frame; private JFrame frame;
private GraphicsEnvironment environment; private GraphicsEnvironment environment;
@@ -132,6 +139,7 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
canvas.addMouseListener(this); canvas.addMouseListener(this);
canvas.addMouseMotionListener(this); canvas.addMouseMotionListener(this);
canvas.addKeyListener(this);
frame.addWindowListener(new WindowAdapter() { frame.addWindowListener(new WindowAdapter() {
@Override @Override
public void windowClosing( WindowEvent e ) { public void windowClosing( WindowEvent e ) {
@@ -396,10 +404,9 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
/* /*
* Mouse handling * Mouse handling
*/ */
@Override @Override
public void mouseClicked( MouseEvent e ) { public final void mouseClicked( MouseEvent e ) {
saveMousePosition(e.getPoint()); saveMousePosition(e);
mouseClicked(); mouseClicked();
} }
@@ -407,8 +414,9 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
@Override @Override
public void mousePressed( MouseEvent e ) { public final void mousePressed( MouseEvent e ) {
saveMousePosition(e.getPoint()); saveMousePosition(e);
mousePressed = true;
mousePressed(); mousePressed();
} }
@@ -416,8 +424,9 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
@Override @Override
public void mouseReleased( MouseEvent e ) { public final void mouseReleased( MouseEvent e ) {
saveMousePosition(e.getPoint()); saveMousePosition(e);
mousePressed = false;
mouseReleased(); mouseReleased();
} }
@@ -425,18 +434,18 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
@Override @Override
public void mouseEntered( MouseEvent e ) { public final void mouseEntered( MouseEvent e ) {
saveMousePosition(e.getPoint()); // Intentionally left blank
} }
@Override @Override
public void mouseExited( MouseEvent e ) { public final void mouseExited( MouseEvent e ) {
saveMousePosition(e.getPoint()); // Intentionally left blank
} }
@Override @Override
public void mouseDragged( MouseEvent e ) { public final void mouseDragged( MouseEvent e ) {
saveMousePosition(e.getPoint()); saveMousePosition(e);
mouseDragged(); mouseDragged();
} }
@@ -445,8 +454,8 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
@Override @Override
public void mouseMoved( MouseEvent e ) { public final void mouseMoved( MouseEvent e ) {
saveMousePosition(e.getPoint()); saveMousePosition(e);
mouseMoved(); mouseMoved();
} }
@@ -454,41 +463,31 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
private void saveMousePosition( Point pLocation ) { private void saveMousePosition( MouseEvent e ) {
//pmouseX = mouseX;
//pmouseY = mouseY;
/*synchronized(mouseLock) {
mouseX = pLocation.getX()-this.getRootPane().getX();
mouseY = pLocation.getY()-this.getRootPane().getY();
}*/
}
private void saveMousePosition() {
pmouseX = mouseX; pmouseX = mouseX;
pmouseY = mouseY; pmouseY = mouseY;
// TODO: Seems not right ... mouseX = e.getX();
java.awt.Point mouseLoc = MouseInfo.getPointerInfo().getLocation(); mouseY = e.getY();
java.awt.Point compLoc = canvas.getLocationOnScreen();
mouseX = mouseLoc.x - compLoc.x;
mouseY = mouseLoc.y - compLoc.y;
}
@Override
public void keyTyped( KeyEvent e ) {
keyTyped();
} }
/* /*
* Keyboard handling * Keyboard handling
*/ */
@Override
public final void keyTyped( KeyEvent e ) {
saveKeys(e);
keyTyped();
}
public void keyTyped() { public void keyTyped() {
} }
@Override @Override
public void keyPressed( KeyEvent e ) { public final void keyPressed( KeyEvent e ) {
saveKeys(e);
keyPressed = true;
keyPressed(); keyPressed();
} }
@@ -497,7 +496,9 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
@Override @Override
public void keyReleased( KeyEvent e ) { public final void keyReleased( KeyEvent e ) {
saveKeys(e);
keyPressed = false;
keyReleased(); keyReleased();
} }
@@ -505,6 +506,11 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
} }
private final void saveKeys( KeyEvent e ) {
key = e.getKeyChar();
keyCode = e.getKeyCode();
}
class Zeichenthread extends Thread { class Zeichenthread extends Thread {
@Override @Override
@@ -535,7 +541,7 @@ public class Zeichenmaschine extends Constants implements MouseInputListener, Ke
delta = (System.nanoTime() - beforeTime) / 1000000000.0; delta = (System.nanoTime() - beforeTime) / 1000000000.0;
beforeTime = System.nanoTime(); beforeTime = System.nanoTime();
saveMousePosition(); //saveMousePosition();
handleUpdate(delta); handleUpdate(delta);
handleDraw(); handleDraw();