# User Input Kapseln



## Grejak (29. Jan 2012)

Für ein kleines Spiel muss ich Maus und Tastatur Signale abfangen( Ist ja klar).
Da ich es aber leid bin in meine Programme immer die ganzen Methoden der Interfaces zu implementieren.ueh: Habe ich daran gedacht alle Methoden in eine Klasse zu Kapseln.

Code:
	
	
	
	





```
public final class Mouse extends MouseInputAdapter{

	private static final long serialVersionUID=1L;
	
	private int x;
	private int y;
	private int oldX;
	private int oldY;
	
	private boolean dragged;
	private boolean rightButton;
	private boolean middleButton;
	private boolean leftButton;
	
	public Mouse(){
		init();
	}
	
	public void init(){
		setX(0);
		setY(0);
		oldX=x;
		oldY=y;
		dragged=false;
		rightButton=false;
		middleButton=false;
		leftButton=false;
	}
	
	public void mousePressed(MouseEvent e) {	
		if(e.getButton()==1)
			leftButton=true;
		if(e.getButton()==2)
			middleButton=true;
		if(e.getButton()==3)
			rightButton=true;
		updateCoord(e);
	}
	public void mouseReleased(MouseEvent e) {
		if(e.getButton()==1){
			leftButton=false;
		}
		if(e.getButton()==2){
			middleButton=false;
		}
		if(e.getButton()==3){
			rightButton=false;
		}
		updateCoord(e);
		dragged=false;
	}

	public void mouseDragged(MouseEvent e) {
		updateCoord(e);
		dragged=true;
	}
	public void mouseMoved(MouseEvent e) {
		updateCoord(e);
		dragged=false;
	}
	
	private void updateCoord(MouseEvent e){
		oldX=x;
		oldY=y;
		setX(e.getX());
		setY(e.getY());
	}
	
	public int getX(){
		return x;
	}
	private void setX(int x){
		this.x=x;
	}
	public int getY(){
		return y;
	}
	private void setY(int y){
		this.y=y;
	}
	public Point2D.Float getLocation(){
		return new Point2D.Float(getX(),getY());
	}
	public boolean wasMoved(){
		if(oldX!=x||oldY!=y){
			oldX=x;
			oldY=y;
			return true;
		}
		return false;
	}
	
	public boolean isDragged(){
		return dragged;
	}
	public boolean isRightButtonPressed(){
		return rightButton;
	}
	public boolean isMiddleButtonPressed(){
		return middleButton;
	}
	public boolean isLeftButtonPressed(){
		return leftButton;
	}
}
//Hilfe aus ApoCommand
```

Jetzt kommt aber das Problem:

Ich weiß nicht wie ich überprüfen soll ob ein Knopf released wurde.

Wenn das Hilft in meinem Gameloop warte ich 20 MilliSekunden vor dem nächsten durchlauf.


----------



## Polli86 (1. Feb 2012)

Hallo Grejak,

Wenn ich das richtig verstanden habe, dann musst du eigentlich nur an deinen
aktiven Component, also der auf dem die Maus rumklickt, ein addMouseListerner 
mit deiner "Maus"-Klasse als Parameter dranhängen.

Bsp.:

```
JPanel panel = new JPanel();   // Komponente auf der rumgeklickt wird...
           panel.addMouseListener(new Mouse());
```

Ich hoffe das hilft ^^, ansonsten mehr Input 

MfG
Polli


----------



## Grejak (2. Feb 2012)

Das war nicht mein Problem, danke trotzdem.

Hat sich jetzt auch schon erledigt


----------

