Boolean Werte - immer "false"

Nuss

Mitglied
Hallo,

ich stehe vor einem Problem, das eigentlich keines sein sollte.
Ich habe eine main-Class, in der eine while-Schleife mit Sys.out.println
existiert, die bei einem bestimmten Tastendruck true und sonst false liefern sollte.

Java:
package gui;

import javax.swing.JFrame;

public class main {

	public static void main(String[] args) {
		Frame f = new Frame();
		Player player = new Player();
		Keyboard keyboard = new Keyboard();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(800, 600);
		f.setVisible(true);
		f.setResizable(false);
		 while(true){
			 System.out.println(keyboard.getUp());
			 
			 f.repaintScreen();
			 try {
				Thread.sleep(15);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 }
	}

}

Dann gibt es noch die Keyboard-Klasse, die den Tastendruck prüft und die
Boolean-Werte festlegt. Dann wird über einen getter der Wert an die Main
übergeben, zum Ausgeben.

Java:
package gui;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Keyboard implements KeyListener{
	private boolean left=false;
	private boolean right=false;
	private boolean up=false;
	private boolean down=false;
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode()==KeyEvent.VK_W)up=true;
		if(e.getKeyCode()==KeyEvent.VK_A)left=true;
		if(e.getKeyCode()==KeyEvent.VK_S)down=true;
		if(e.getKeyCode()==KeyEvent.VK_D)right=true;
		
		
	}
	@Override
	public void keyReleased(KeyEvent e) {
		if(e.getKeyCode()==KeyEvent.VK_W)up=false;
		if(e.getKeyCode()==KeyEvent.VK_A)left=false;
		if(e.getKeyCode()==KeyEvent.VK_S)down=false;
		if(e.getKeyCode()==KeyEvent.VK_D)right=false;
		
	}
	boolean getUp(){
		return up;
	}
	boolean getDown(){
		return down;
	}
	boolean getLeft(){
		return left;
	}
	boolean getRight(){
		return right;
	}
	
}

Irgendwie wird aber immer nur ein false-Wert ausgegeben. Ich verstehe die
Welt nicht mehr, wo liegt der Fehler? Ich wäre jedem sehr verbunden,
der mir da weiterhelfen könnte.
 
Zuletzt bearbeitet:

Kiri

Bekanntes Mitglied
Adde den KeyListener!

Java:
Keyboard keyboard = new Keyboard();
f.addKeyListener(keyboard);
 

Nuss

Mitglied
Achja, genau!
Mit
Java:
f.addKeyListener(keyboard);
funktioniert's natürlich. Aber warum funktioniert das nicht, wenn ich bei der Frame-Klasse den KeyListener "adde"?

Java:
package gui;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Frame extends JFrame{
	
	Screen screen;
	Player player = new Player();
	Keyboard keyboard = new Keyboard();
	
	public Frame(){
		super("Test");
		screen = new Screen();
		screen.setBounds(0,0,800,600);
		add(screen);
		addKeyListener(keyboard); //damit würd's nicht funktionieren
	}
	
	public class Screen extends JLabel{
		protected void paintComponent(Graphics g){
			super.paintComponent(g);

			g.drawImage(player.getLookNormal(), (int)player.getX(), (int)player.getY(), null);
	}
		
	
}
	
	public void repaintScreen(){
		screen.repaint();
	}
		
	
}

Warum muss ich über die Main auf Frame zugreifen und den KeyListener hinzufügen, und nicht gleich von Frame aus?
 

Kiri

Bekanntes Mitglied
Jedes Mal wenn du dies

Java:
Keyboard keyboard = new Keyboard();

schreibst, erstellst du eine neue Instanz von Keyboard. Wenn du in der Frame-Klasse den KeyListener addest, musst du dafür sorgen, das genau diese Instanz auch in deiner Main-Klasse oder wo auch immer du sie benötigst verwendet wird und keine neue Instanz erstellen.

Anders gesagt, wenn du in deiner Frame-Klasse so einen KeyListener addest - in der Main-Klasse aber auf einen neuen erstellst, diesen nicht addest, dann funktioniert das natürlich nicht - da die Verbindung fehlt.
 

Nuss

Mitglied
Ah, gut zu wissen. Vielen Dank! Jetzt funktioniert's.
-----
Ich habe allerdings noch eine Frage dazu. Ich soll
also in jeder Klasse in der ich auf Keyboard zugreifen
möchte, auch den KeyListener einbinden?

Java:
f.addKeyListener(keyboard);

In meiner Player-Klasse würde ich gerne die Position
des Spielers auf Tastendruck ändern. Bisher gab es keine
Reaktion, es hat sich nichts bewegt. Deshalb habe ich
nun auch jenen Code von oben in die Player-Klasse eingebunden,
in der die Positionen geändert werden sollen.

Da gibt's allerdings eine Fehlermeldung
(VariableDeclarationId expected) von Eclipse. Ich binde hier einmal
die vier Klassen ein, die mir gerade Probleme bereiten. Obwohl es mir Leid tut,
dass das so viel Code ist, würde es mich sehr freuen, wenn jmd. so gütig
wäre, um mich auf meine fehlenden Kompetenzen und Fehler hinzuweisen. :D

Player-Class:
Java:
package gui;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Player {
	private static BufferedImage [] look = new BufferedImage [5];
	 float posx=30;
	 float posy=30;
	 Frame f = new Frame();
	 Keyboard keyboard = new Keyboard();
	 f.addKeyListener(keyboard);
	 
	static{
	try {
		look[0] = ImageIO.read(Player.class.getClassLoader().getResourceAsStream("gfx/programmer.png"));
		look[1] = ImageIO.read(Player.class.getClassLoader().getResourceAsStream("gfx/programmer_left1.png"));
		look[2] = ImageIO.read(Player.class.getClassLoader().getResourceAsStream("gfx/programmer_left2.png"));
		look[3] = ImageIO.read(Player.class.getClassLoader().getResourceAsStream("gfx/programmer_right1.png"));
		look[4] = ImageIO.read(Player.class.getClassLoader().getResourceAsStream("gfx/programmer_right2.png"));
		
	
	} 
	catch (IOException e) {e.printStackTrace();
	}
	}
	
	
	BufferedImage getLookNormal(){
		return look[0];
	}

	
	public void updatePlayer(){
		if(keyboard.getLeft())posx-=5;
		if(keyboard.getRight())posx+=5;
		if(keyboard.getUp())posy-=5;
		if(keyboard.getDown())posy+=5;
	}
	
	float getX(){
		return posx;
	}
	float getY(){
		return posy;
	}
	

	}


Frame-Class:
Java:
package gui;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Frame extends JFrame{
	
	Screen screen;
	Player player = new Player();
	Keyboard keyboard = new Keyboard();
	
	public Frame(){
		super("Test");
		screen = new Screen();
		screen.setBounds(0,0,800,600);
		add(screen);
		addKeyListener(new Keyboard());
		
	}
	
	public class Screen extends JLabel{
		protected void paintComponent(Graphics g){
			super.paintComponent(g);
			g.drawImage(player.getLookNormal(), (int)player.getX(), (int)player.getY(), null);
			
	}
		
	
}
	
	public void repaintScreen(){
		screen.repaint();
	}
}

main-Class:
Java:
package gui;

import javax.swing.JFrame;

public class main {

	public static void main(String[] args) {
		Frame f = new Frame();
		Player player = new Player();
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(800, 600);
		f.setVisible(true);
		f.setResizable(false);
		 while(true){
			player.updatePlayer();
			//System.out.println(player.posx);
			 f.repaintScreen();
			 try {
				Thread.sleep(15);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 }
	}

}

Keyboard-Class:
Java:
package gui;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Keyboard implements KeyListener{
	private boolean left=false;
	private boolean right=false;
	private boolean up=false;
	private boolean down=false;
	
	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode()==KeyEvent.VK_W)up=true;
		if(e.getKeyCode()==KeyEvent.VK_A)left=true;
		if(e.getKeyCode()==KeyEvent.VK_S)down=true;
		if(e.getKeyCode()==KeyEvent.VK_D)right=true;
		
		
	}
	@Override
	public void keyReleased(KeyEvent e) {
		if(e.getKeyCode()==KeyEvent.VK_W)up=false;
		if(e.getKeyCode()==KeyEvent.VK_A)left=false;
		if(e.getKeyCode()==KeyEvent.VK_S)down=false;
		if(e.getKeyCode()==KeyEvent.VK_D)right=false;
		
	}
	boolean getUp(){
		return up;
	}
	boolean getDown(){
		return down;
	}
	boolean getLeft(){
		return left;
	}
	boolean getRight(){
		return right;
	}
	
}

Vielen Dank!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
B Rückgabewert boolean Java Basics - Anfänger-Themen 8
J Compiler-Fehler Harshadzahlen mit Boolean Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
A Boolean Java Basics - Anfänger-Themen 5
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
J Boolean[] teilen Java Basics - Anfänger-Themen 13
S public static boolean Java Basics - Anfänger-Themen 4
R Boolean Methode Rückgabewert if() Java Basics - Anfänger-Themen 1
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
L Überschriebene Boolean Statements Java Basics - Anfänger-Themen 2
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
Kirby.exe ArrayOutOfBoundsException bei boolean Array Java Basics - Anfänger-Themen 19
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
C Java Boolean reagiert nicht Java Basics - Anfänger-Themen 18
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
F Boolean Methode Wert ausgeben. Java Basics - Anfänger-Themen 2
K Boolean in einer Methode um 2 Objekte zu vergleichen Java Basics - Anfänger-Themen 12
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
A Boolean in String Java Basics - Anfänger-Themen 2
S Operatoren Boolean Vergleichsoperator Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11
E ISBN Nummer mit boolean Java Basics - Anfänger-Themen 5
W In Methode boolean array zurückgeben Java Basics - Anfänger-Themen 3
B Math.random mit Boolean array? Java Basics - Anfänger-Themen 17
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
T Methoden Boolean wird nicht gesetzt Java Basics - Anfänger-Themen 1
H boolean Array Problem Java Basics - Anfänger-Themen 7
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
O boolean Array Frage! Java Basics - Anfänger-Themen 4
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
D Boolean Array initialisieren Java Basics - Anfänger-Themen 4
M Datentypen Byte, Float und Boolean Java Basics - Anfänger-Themen 13
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
W Interpreter-Fehler boolean nur eins darf wahr sein Java Basics - Anfänger-Themen 11
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
K Problem mit Methode(Array,Boolean,ForSchleife) Java Basics - Anfänger-Themen 6
V Methode erstellen für ein Boolean Array Java Basics - Anfänger-Themen 13
T Boolean by Reference Java Basics - Anfänger-Themen 6
L Wertebereich von boolean Java Basics - Anfänger-Themen 4
D Erklärung static boolean Java Basics - Anfänger-Themen 6
T Eine String Matrix erstellen die eine boolean Funtion verwendet Java Basics - Anfänger-Themen 10
J Datentypen Boolean Refferenz Objekt Java Basics - Anfänger-Themen 2
A boolean Methode ohne If und else Java Basics - Anfänger-Themen 1
fLooojava Laufender Thread | Boolean ändern Java Basics - Anfänger-Themen 9
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
A Boolean aus dem ActionlListener Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
T boolean, was passiert hier? Java Basics - Anfänger-Themen 4
M Sind solche boolean Anweisen empfehlenswert? Java Basics - Anfänger-Themen 3
J GUI per Boolean steuern Java Basics - Anfänger-Themen 3
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
K Viergewinnt - boolean Problem Java Basics - Anfänger-Themen 2
S Best Practice Boolean mit IF verbinden Java Basics - Anfänger-Themen 7
D Boolean mit String Java Basics - Anfänger-Themen 2
K Methode ohne Rückgabewert in boolean Methode ändern Java Basics - Anfänger-Themen 6
E 2 dimensionales Boolean Array Java Basics - Anfänger-Themen 5
B assertArrayEquals nicht für boolean[]? Java Basics - Anfänger-Themen 2
M !boolean das selbe wie boolean == false? Java Basics - Anfänger-Themen 3
L Boolean Methode wirft Fehler aus Java Basics - Anfänger-Themen 12
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
F Datentypen Frage nach Boolean Java Basics - Anfänger-Themen 11
C Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 20
B Boolean abfrage Java Basics - Anfänger-Themen 3
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
L Methoden Boolean-Methode Java Basics - Anfänger-Themen 16
S Setter Methode von Boolean Java Basics - Anfänger-Themen 11
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
M int & boolean Java Basics - Anfänger-Themen 12
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
R boolean, if-else Java Basics - Anfänger-Themen 7
J Variablen Boolean true "übersetzen" in String Java Basics - Anfänger-Themen 10
M Meldung "cannot convert flom boolean to boolean[]" Java Basics - Anfänger-Themen 3
S Name eines boolean ausgeben (nicht den Wert) Java Basics - Anfänger-Themen 43
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
D boolean te wird nicht verwendet Java Basics - Anfänger-Themen 2
M Bedingte Anweisung mit Boolean Java Basics - Anfänger-Themen 2
C cannot convert from int to boolean Java Basics - Anfänger-Themen 3
T Variablen boolean-wert wird nicht gesetzt Java Basics - Anfänger-Themen 6
A In Methode boolean ändern Java Basics - Anfänger-Themen 2
D Java Einsteiger (boolean, if-else etc.) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben