tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
16
ZUGRIFFE
416
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    $$Money$$ Tutorials.de Gastzugang
    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 :
    1
    2
    3
    4
    5
    6
    7
    
    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
     

  2. #2
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Ich rate mal, dass du die betreffende Variable auch auf ein Objekt verweißen lassen soltest.
     

  3. #3
    $$Money$$ Tutorials.de Gastzugang
    Kannst du das ein wenig erläutern ich bilcke da gerade nicht so durch...
     

  4. #4
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Poste bitte ein wenig mehr Code.
    Vor allem das wo das JLabel definiert wird.
     

  5. #5
    $$Money$$ Tutorials.de Gastzugang
    Hier wird das Label erstellt und auf den Bildschirm gebracht:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    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:
    Code java:
    1
    
    private JLabel label1;

    reicht das
     

  6. #6
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Bitte noch die Klasse "car", oder ist die so schon vollständig?
     

  7. #7
    $$Money$$ Tutorials.de Gastzugang
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
       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;
                }
            }}
        }
      }
     

  8. #8
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    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:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    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;
                }
            }}
        }
      }
     

  9. #9
    $$Money$$ Tutorials.de Gastzugang
    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();
    ^
     

  10. #10
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Die CarCrash.java hast du vorher nur bis etwa Zeile 25 gepostet.
     

  11. #11
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    du musst natürlich auch die Zeile ändern, in der das Object der Klasse car angelegt wird. Du rufst dort den Standard-Kontruktor (new car()) auf. Diesen gibts jetzt aber nicht mehr. Dort musst du jetzt dein Label übergeben.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  12. #12
    $$Money$$ Tutorials.de Gastzugang
    Naja das funktioniert genau so wenig wie alles andere hier beschriebene...
     

  13. #13
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    alles, was hier beschrieben wurde funktioniert eigentlich schon, es muss nur richtig umgesetzt werden.

    Zeig mal die Stelle an der du das car-Object anlegst.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  14. #14
    $$Money$$ Tutorials.de Gastzugang
    Ich nehme an du meinst das:

    Code java:
    1
    2
    
    car t = new car();
    t.start();

    und das ganze befindet sich dort wo das JLabel erstellt und auf den Bildschirm gebracht wird also hier:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
     
    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);
     
    car t = new car();
    t.start();
    usw....

    Ich hoffe das bringt uns weiter...

    MfG:
     

  15. #15
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Wenn du die Klasse car von Kai übernommen hast, bringt uns das weiter.

    Ersetze diese Zeile
    Code :
    1
    
    car t = new car();

    durch diese Zeile
    Code :
    1
    
    car t = new car(labell);

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. blinkende JLabel
    Von Na_dine im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 23.10.07, 18:35
  2. JLabel und Sonderzeichen
    Von normaler_spinner im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 30.07.07, 23:40
  3. JLabel
    Von lernen.2007 im Forum Java
    Antworten: 9
    Letzter Beitrag: 28.05.07, 20:13
  4. JLabel & invokeLater
    Von Javazubi im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 8
    Letzter Beitrag: 27.10.06, 14:34
  5. JTextField auf JLabel
    Von Ripper11 im Forum Java
    Antworten: 2
    Letzter Beitrag: 17.10.06, 18:24