Threads run() wird nicht aufgerufen?

KingOfExceptions

Bekanntes Mitglied
ich hab einen thread gemacht:
Code:
Thread thread=new Thread();
Code:
thread.start();

und ich möchte dass er folgendes macht:
Java:
public void run() 
	{
		System.out.println("WIRD GEMANCHT");
		
		while(frame.isVisible())
		{
			check();
			repaint();
			try{Thread.sleep(10);}catch(InterruptedException e){}
		}
		
	}

jedoch scheint er die methode noch nicht einmal aufzurufen...?

was hab ich falsch gemacht?
 

KingOfExceptions

Bekanntes Mitglied
so das wäre der komplette code:

Java:
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import java.util.Vector;

import javax.imageio.ImageIO;
import javax.swing.*;

public class GamePanel extends JPanel implements KeyListener, Runnable
{
	private static final long serialVersionUID = 1L;

	Random rand=new Random();
	JFrame frame;

	Thread thread=new Thread();
		
	Vector positionsx=new Vector (50,5);
	Vector positionsy=new Vector(50,5);
	
	BufferedImage background;
	BufferedImage einsammel;
	BufferedImage spielpunkt;
	
	boolean up;
	boolean down;
	boolean left;
	boolean right;
	boolean gameEnd;
	
	int x=0;
	int y=0;
	int c=23;
	int v=23;
	
	int posxein=100;
	int posyein=100;
	
	boolean eingesammelt;
	
	public GamePanel (int w, int h)
	{		
		if(thread!=null)
			thread.start();
		
		this.setPreferredSize(new Dimension(w,h));
		frame=new JFrame("Spiel");
		frame.setLocation(300,150);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.add(this);
		frame.addKeyListener(this);
		getBilder();
		frame.pack();
		frame.setVisible(true);	
	}
	
	public void getBilder()
	{
		getEinsammelPunkte();
		getBack();
		getEinsammel();		
	}
	
	public void getBack()
	{
		try
		{
			background=ImageIO.read(getClass().getResourceAsStream("hintergrund.jpg"));
		}
		
		catch(IOException e){System.out.println("FEHLER");}
	}
	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		g.drawImage(background, 25, 25, this);
		g.drawImage(einsammel, posxein, posyein, this);
		g.drawImage(spielpunkt, c, v, this);
		
	}		 
	
	public static void main(String[]args) //Fenster
	{
		new GamePanel(613,629);
	}
		
	public void getEinsammel()
	{
		try
		{
			einsammel=ImageIO.read(getClass().getResourceAsStream("einsammel.jpg"));
			spielpunkt=ImageIO.read(getClass().getResourceAsStream("spielpunkt.jpg"));
		}
		
		catch(IOException e){System.out.println("FEHLER BEI PUNKTEN");}
	}

	public void keyPressed(KeyEvent e) 
	{
		if(e.getKeyCode()==KeyEvent.VK_UP);
		up=true;
		
		if(e.getKeyCode()==KeyEvent.VK_DOWN);
		down=true;

		if(e.getKeyCode()==KeyEvent.VK_LEFT);
		left=true;
		
		if(e.getKeyCode()==KeyEvent.VK_RIGHT);
		right=true;
		
		check();
		
	}

	public void keyReleased(KeyEvent e)
	{
		if(e.getKeyCode()==KeyEvent.VK_UP);
		up=false;
		
		if(e.getKeyCode()==KeyEvent.VK_DOWN);
		down=false;

		if(e.getKeyCode()==KeyEvent.VK_LEFT);
		left=false;
		
		if(e.getKeyCode()==KeyEvent.VK_RIGHT);
		right=false;
		
		check();
	}
	
	public void check()
	
	{
		if(up)
		{
			if(v!=0)
			{
				v=v-1;
			}
			repaint();
		}
		
		if(down)
		{
			if(v<330)
			{
				v=v+1;
			}
			
			repaint();
		}

		if(up)
		{
			if(c!=0)
			{
				c=c-1;
			}
			
			repaint();
		}
		
		if(down)
		{
			if(c<960)
			{
				c=c+1;
			}
			
			repaint();
		}
		
		checkPosition();
	}

	public void keyTyped(KeyEvent e) 
	{
	}
	
	public void checkPosition()
	{		
		if(c==posxein&&v==posyein||c==posxein-1&&v==posyein||c==posxein-2&&v==posyein||c==posxein-1&&v==posyein-1||c==posxein-1&&v==posyein-2||c==posxein-2&&v==posyein-1||c==posxein-2&&v==posyein-2||c==posxein+1&&v==posyein||c==posxein+2&&v==posyein||c==posxein+1&&v==posyein+1||c==posxein+1&&v==posyein+2||c==posxein+2&&v==posyein+1||c==posxein+2&&v==posyein+2)
		{
			System.out.println("EINGESAMMELT");
			eingesammelt=true;
		}
	}
	
	public void getEinsammelPunkte()
	{
		getVectorelements();
		System.out.println("Laden beendet");
		posxein=(Integer) positionsx.elementAt(rand.nextInt(28));
		try{Thread.sleep(rand.nextInt(1));}catch(Exception e){}
		posyein=(Integer) positionsy.elementAt(rand.nextInt(29));
		System.out.println("GEMACHT");
	}

	public void getVectorelements() 
	{
		while(x!=546||y!=560)
		{
			positionsx.add(x);
			positionsy.add(y);
			x=x+20;
			y=y+20;
			positionsx.add(x);
			positionsy.add(y);
			x=x+19;
			y=y+20;
			System.out.println("Wurde durchgeführt "+x);
			System.out.println(+y);
		}
		
	}

	public void run() 
	{
		System.out.println("WIRD GEMANCHT");
		
		while(frame.isVisible())
		{
			check();
			repaint();
			try{Thread.sleep(10);}catch(InterruptedException e){}
		}
		
	}
	
}
 

ARadauer

Top Contributor
Ich würd mal das lesen... Galileo Computing :: Java ist auch eine Insel - 12 Einführung in die nebenläufige Programmierung

Also wenn du mit Runable arbeitest, musst du dem Thread dieses Objekt mitgeben.
Was soll den der Thread sonst ausführen?

Java:
public class Test implements Runnable{

	public static void main(String[] args) {
		
		Thread thread = new Thread(new Test());
		thread.start();
		
		System.out.println("aus");
		
	}

	public void run() {
		try {
			Thread.sleep(500);
		} catch (InterruptedException e) {
		}
		System.out.println("im Thread");
		
	}
}


statt deinem
if(thread!=null)
thread.start();
Machst du ein


Java:
		Thread thread = new Thread(this);
		thread.start();

Achtung:
if(e.getKeyCode()==KeyEvent.VK_LEFT);
left=false;

kein ; am ende von if!!!
 

ARadauer

Top Contributor
Ja wie soll ich den das wissen?
Ich sage du sollst dein (was 0 Sinn ergibt)
Java:
if(thread!=null)
thread.start();
durch ein
Java:
Thread thread = new Thread(this);
thread.start();
ersetzen... und du vertippst dich oder vergissst irgend ein kleines ; was weiß ich...

Sorry aber ich komm mir hier blöd vor.
Du hast ein Problem. Ich frag nach. Du postest mir zu wenig. Ich frag nach... du postest 300 Zeilen code der an 4 Stellen mit dem Probelm was zu tun hat. ich sag dir genau was du durch was ersetzen musst.
Du sagst es geht nicht.

Soll ich jetzt nochmal nach dem code fragen?
 

ARadauer

Top Contributor
1. ich hab dir den GANZEN code geschickt.?
Ja war ja ein Fehler drinnen.
2. ich hab es ganz genau ersetzt
ich auch... bei mir gehts..
3. was ist denn so schlimm an if(thread!=null) ?
[/quote]
Nix. Aber oben machst du ein
Thread thread=new Thread();
und unten startest du ihn
thread.start();

Aber der Thread an sich macht ja nix. Woher weiß das thread objekt was es zu tun hat?
1. Man überschreibt die run Methode von Thread
oder
2. Man überschreibt die run Methode von einem Runable (was du machst) und übergibt es an einen Thread (was du nicht machst)

ok... poste nochmal deinen geänderten code...

btw... dieses

Thread thread = new Thread(this);
thread.start();
musst du am ende vom Konstruktor machen, da ja sonst frame null ist
 

Marco13

Top Contributor
Ja, das war es wohl: Wenn man das
Thread thread = new Thread(this);
thread.start();
dort hinschreibt, wo vorher (beim ersten Codestück) der Thread erstellt wurde, haut das nicht hin...
Java:
public class GamePanel extends JPanel implements KeyListener, Runnable
{
...
    Thread thread=null; // new Thread(); NICHT hier den Thread erstellen....
        
...
    
    public GamePanel (int w, int h)
    {       
        thread = new Thread(this); //  Sondern hier....
        thread.start();
...

Aber wenn's daran hakt, könnte das hier noch ein laaaanger Thread werden...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Klassen mouseClicked wird nicht aufgerufen, während man die Maus bewegt Java Basics - Anfänger-Themen 4
D Methoden Methode wird nicht aufgerufen Java Basics - Anfänger-Themen 4
T paint() wird nicht aufgerufen Java Basics - Anfänger-Themen 2
J Objekt konstruktor wird nicht aufgerufen Java Basics - Anfänger-Themen 11
kulturfenster paintComponent wird nicht aufgerufen Java Basics - Anfänger-Themen 16
G Applet - Methode start() wird nicht aufgerufen Java Basics - Anfänger-Themen 2
K Exception wird nicht aufgerufen Java Basics - Anfänger-Themen 11
S update wird nicht aufgerufen Java Basics - Anfänger-Themen 9
D finalize()-Methode wird nicht aufgerufen Java Basics - Anfänger-Themen 3
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
O System.out.println wird nicht ausgegeben? Java Basics - Anfänger-Themen 11
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
el_pato DialogFenster wird nicht in Schleife geöffnet? Java Basics - Anfänger-Themen 30
J if-Schleife innerhalb einer if-Schleife wird in der Konsole nicht gelesen Java Basics - Anfänger-Themen 4
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
H Array wird als Rückgabewert nicht akzeptiert? Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
H GridPane wird nicht angezeigt Java Basics - Anfänger-Themen 0
H Endkapital wird nicht korrekt ausgegeben. Java Basics - Anfänger-Themen 5
C Methodenrückgabe wird in der main nicht berücksichtigt Java Basics - Anfänger-Themen 2
kodela Hauptklasse wird nicht gefunden Java Basics - Anfänger-Themen 3
H Befehl wird nicht ausgeführt - System.out.println Java Basics - Anfänger-Themen 3
P Bedingung in Schleife wird nicht ausgeführt Java Basics - Anfänger-Themen 5
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
M Else wird nicht ausgeführt. Java Basics - Anfänger-Themen 5
E Methoden Action Event wird nicht vollständig ausgeführt Java Basics - Anfänger-Themen 3
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
F Switch case wird als char nicht erkannt.... Java Basics - Anfänger-Themen 6
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
M BorderLayout, 2Panels, EAST wird nicht angezeigt ?? Java Basics - Anfänger-Themen 2
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
J bundel - Datei wird nicht gefunden. Trotz STRG-SHIFT-J Java Basics - Anfänger-Themen 2
S Interpreter wird nicht gefunden Java Basics - Anfänger-Themen 1
Dann07 Sound wird nicht abgespielt Java Basics - Anfänger-Themen 25
T Dateiinhalt wird nicht in String eingelesen Java Basics - Anfänger-Themen 4
U JRE_HOME Umgebungsvariable wird nicht erkannt Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
G XML encoding wird nicht übernommen Java Basics - Anfänger-Themen 17
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
M Klassen Warum wird es nicht gespeichert? Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
D JAVA JDK korrekt installieren javac wird nicht gefunden Java Basics - Anfänger-Themen 2
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
F Quellcode wird nicht in cmd angezeigt Java Basics - Anfänger-Themen 8
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
T Methoden Boolean wird nicht gesetzt Java Basics - Anfänger-Themen 1
K Warum wird if-Schleife nicht ausgeführt? Java Basics - Anfänger-Themen 13
D Klassen Warum wird das Attribut nicht ausgegeben? Java Basics - Anfänger-Themen 8
D Schleife wird nicht "ausgeführt" Java Basics - Anfänger-Themen 10
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
R jar wird nicht ausgeführt Java Basics - Anfänger-Themen 3
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
T Methoden char wird nicht ausgegeben Java Basics - Anfänger-Themen 3
L Werbung wird nicht geladen Java Basics - Anfänger-Themen 0
J Collections Generics: Typ wird nicht erkannt Java Basics - Anfänger-Themen 7
Xentox501 KeyTyped wird nicht wahrgenommen Java Basics - Anfänger-Themen 8
O Schlüsselworte Syso wird nicht erkannt Java Basics - Anfänger-Themen 4
P Erste Schritte JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 4
T Methoden Methode wird nicht auf Konsole ausgeführt Java Basics - Anfänger-Themen 3
F Erste Schritte Programm wird nicht geladen Java Basics - Anfänger-Themen 2
F Interface ImageIcon wird nicht angezeigt Java Basics - Anfänger-Themen 4
Bluebird209 Array wird nicht an Methode übergeben Java Basics - Anfänger-Themen 7
R actionPerformed wird nicht ausgeführt Java Basics - Anfänger-Themen 5
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
Ruschi JDK installieren javac wird nicht gefunden Java Basics - Anfänger-Themen 48
E Methoden 2D Array wird in der Methode nicht geändert/gespeichert Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben