JLabel

$

$$Money$$

Hallo,

Ich habe ein Problem, ich habe einen Thread, jedesmal wenn dieser Thread durchlaufen wurde möchte ich in einem JLabel namens "label1" einen neuen Text zuweisen. Ich habe bereits folgendes probiert.

Code:
class car extends Thread {
  public void run() {
  //Anweisungen
  label1.setText("Punkte: "+points);
  label1.revalidate(); 
 }
}

Ich habe es auch mit update oder repaint versucht aber ich krieg immer eine Null pointer Exception.

Was kann ich dagegen machen

MfG:

Money
 
Hier wird das Label erstellt und auf den Bildschirm gebracht:
Java:
CarCrash(String titel) {
    super(titel);
//Fensterkomponenten
    setLayout(null);
	
	bildanzeige = new Bildleinwand();
	bildanzeige.setBounds(0,0,960,544);
	
	JButton button1 = new JButton("Neues Spiel");
	button1.setBounds(960,200,140,30);
	JButton button2 = new JButton("Pause");
	button2.setBounds(960,235,140,30);
	JButton button3 = new JButton("Fortsetzen");
	button3.setBounds(960,270,140,30);
	JButton button4 = new JButton("Beenden");
	button4.setBounds(960,305,140,30);
	
	JLabel label1 = new JLabel("Punkte: "+points);
	label1.setBounds(965,0,140,30);
	
	add(bildanzeige);
	add(button1);
	add(button2);
	add(button3);
	add(button4);
	add(label1);
usw....

und vorher gibts da noch das:
Java:
private JLabel label1;

reicht das
 
Java:
   class car extends Thread{
	public void run(){
		while (police_ypos3 < 550) {
		if(flag && flag2){
			police_ypos3 += police_speed3;
				if(police_ypos3 >=550){
					 while(true){
						police_ypos3 = generator.nextInt(400);
						if(police_ypos3 < 120){
							continue;
						}
						police_ypos3 = police_ypos3/-1;
						break;
					}
					while(true){
						police_xpos3 = generator.nextInt(693);
						if(police_xpos3 <466){
							continue;
						}
						break;
					}
					police_speed3 += 0.15;
					points++;
					label1.setText("Punkte: "+points);
					label1.revalidate();
				}
			bildanzeige.repaint();
			try {       
				Thread.sleep(10);
			} 
			catch (InterruptedException e) {
				interrupt();     
			}
			if(flag == false && flag2 == false){
				break;
			}
		}}
    }
  }
 
So wie ich das sehe definierst du label1 nicht, deshalb wundert es mich, dass es nur eine NullPointer ist.

Du musst das Ding natürlich auch an das Car übergeben:

Java:
class car extends Thread{
    private JLabel label1;

    public car(JLabel l)
    {
        this.label1 = l;
    }
    public void run(){
        while (police_ypos3 < 550) {
        if(flag && flag2){
            police_ypos3 += police_speed3;
                if(police_ypos3 >=550){
                     while(true){
                        police_ypos3 = generator.nextInt(400);
                        if(police_ypos3 < 120){
                            continue;
                        }
                        police_ypos3 = police_ypos3/-1;
                        break;
                    }
                    while(true){
                        police_xpos3 = generator.nextInt(693);
                        if(police_xpos3 <466){
                            continue;
                        }
                        break;
                    }
                    police_speed3 += 0.15;
                    points++;
                    label1.setText("Punkte: "+points);
                    label1.revalidate();
                }
            bildanzeige.repaint();
            try {      
                Thread.sleep(10);
            }
            catch (InterruptedException e) {
                interrupt();    
            }
            if(flag == false && flag2 == false){
                break;
            }
        }}
    }
  }
 
Funktioniert nicht nun krieg ich die meldung:

CarCrash
C:\Dokumente und Einstellungen\Beat\Desktop\CarCrash_Lite>javac CarCrash.java
CarCrash.java:44: cannot find symbol
symbol : constructor car()
location: class CarCrash.car
car t3 = new car();
^
 

Neue Beiträge

Zurück