[Java] Timer ohne sleep

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von H4x0rZ, 15. Januar 2010 .

Schlagworte:
  1. 15. Januar 2010
    Timer ohne sleep

    Tach zusammen!

    Habe folgendes Problem, werde erstmal die Klassen Posten und dann mein Problem beschreiben.
    Grafische Oberfläche:

    PHP:

    import java
    . awt . Color ;
    import java . awt . Component ;
    import java . awt . Dimension ;
    import java . awt . event . ActionEvent ;
    import java . awt . event . ActionListener ;
    import javax . swing . BoxLayout ;
    import javax . swing . ImageIcon ;
    import javax . swing . JButton ;
    import javax . swing . JFrame ;
    import javax . swing . JLabel ;
    import javax . swing . JPanel ;
    import javax . swing . JTextField ;

    public class 
    Eingabe  extends  JFrame  implements  ActionListener {
        private static final 
    long serialVersionUID  1L ;

        private 
    javax . swing . JButton bild ;
        private 
    javax . swing . JButton okButton ;
        private 
    javax . swing . JLabel textFeld ;
        private 
    javax . swing . JTextField eingabeFeld ;

        private static 
    int instancecounter  0 ;
        
    Tuxgotchi tuxgotchi  null ;
        
        
    boolean erg  false ;
        
    String resultat = "leer" ;
        
        private 
    JPanel contentPanel  null ;

        


        
    public  Eingabe ( String dateiname String text Tuxgotchi tux ) {
            
    initComponents ();

            
    ladeBild ( dateiname );
            
    textFeld . setText ( text );
            
    tuxgotchi  tux ;

            
    setVisible ( true );
            
            
    positioniereFenster ();
        }

        public 
    void setVisible ( boolean status ) {
          if ((
    isVisible () && ! status ) || (! isVisible () &&  status ))
                
    super . setVisible ( status );
        }

        public 
    void setzeAusgabetext ( String ausgabeText ) {
            
    textFeld . setText ( ausgabeText );
        }

        public 
    String getEingabe () {
            return 
    eingabeFeld . getText ();
        }

        public 
    void clearEingabe () {
            
    eingabeFeld . setText ( "" );
        }

        private 
    void initComponents () {

            
    setDefaultCloseOperation ( EXIT_ON_CLOSE );
            
    contentPanel  = new  JPanel ();
            
    contentPanel . setLayout (new  BoxLayout ( contentPanel BoxLayout . Y_AXIS ));
            
    setContentPane ( contentPanel );
            
            
    bild  = new  JButton ();
            
    bild . setBackground ( Color . white );
            
    bild . setPreferredSize (new  Dimension ( 270 270 ));
            
    bild . setAlignmentX ( Component . CENTER_ALIGNMENT );

            
    textFeld  = new  JLabel ();
            
    textFeld . setText ( "jLabel1" );
            
    textFeld . setAlignmentX ( Component . CENTER_ALIGNMENT );

            
    eingabeFeld  = new  JTextField ();
            
    eingabeFeld . setAlignmentX ( Component . CENTER_ALIGNMENT );

            
    okButton  = new  JButton ();
            
    okButton . setText ( "OK" );
            
    okButton . setAlignmentX ( Component . CENTER_ALIGNMENT );
            
    okButton . addActionListener ( this );
            
            
    contentPanel . add ( bild );
            
    contentPanel . add ( textFeld );
            
    contentPanel . add ( eingabeFeld );
            
    contentPanel . add ( okButton );
           
            
    pack ();
        }
        
        private 
    void ladeBild ( String dateiname ) {
            
    String pfadZumBildString  "pics/"  dateiname  ".png" ;
            
    java . net . URL url  ClassLoader . getSystemResource ( pfadZumBildString );
            
    bild . setIcon (new  ImageIcon ( url ));
       }

        private 
    void positioniereFenster () {
            
    instancecounter  instancecounter  1 ;
            
    setLocation ((( instancecounter  5 ) *  220 ) %  1000 , (( instancecounter  5 ) *  220 ) %  800 );
            
    setTitle ( tuxgotchi . toString ());
        }

        public 
    void actionPerformed ( ActionEvent evt ) {
            
            
    String eingabe = getEingabe ();      
            
    eingabe = eingabeWortErkennung ( eingabe );
                 
            if(
    erg = false ){
                
    eingabeFeld . setText ( "Ungültige eingabe bitte wiederholen." );    
            } 
            
            if(
    erg = true ){    
                
    eingabeFeld . setText ( "Alles Klar! Ich gehe jetzt Essen" );
            
    //    tuxgotchi.gibFutter();           
            
    }
        }

        public 
    String eingabeWortErkennung ( String eingabe ){
          
        
    String []  fragen  = new  String [ 5 ];               
        
    fragen [ 0 ]= "hungrig" ;
        
    fragen [ 1 ]= "kohldampf" ;
        
    fragen [ 2 ]= "hunger" ;
                      
                 
        for(
    int i  0 i < i ++){       //Erkennung des Worts im Text

            
    int wortAnfangsIndex  = - 1 ;                   
                
    wortAnfangsIndex  eingabe . indexOf ( fragen [ i ]);
                       
           if (
    wortAnfangsIndex  != - 1 ){         
                
               
    int wortlaenge  fragen [ i ]. length ();
               
    resultat  eingabe . substring ( wortAnfangsIndex wortAnfangsIndex + wortlaenge );
                 
                       
    wortAnfangsIndex  = - 1 ;
                       
                
    erg  true ;
                return 
    resultat ;
                       
                      
            } 
                
           
        }
               
          
      
    int wortAnfangsIndex  = - 1 ;                
      
    wortAnfangsIndex  eingabe . indexOf ( "essen" );
                   
      if(
    wortAnfangsIndex  != - 1 ){
                       
         
    resultat  eingabe . substring ( wortAnfangsIndex , wortAnfangsIndex + 5 );
         
    wortAnfangsIndex  = - 1 ;

         
    erg  true ;
         return 
    resultat ;
      }
                   
      
           
     return 
    resultat ;       
          }
                   

    }


    Spielsteuerung:

    PHP:

    public class  Tuxgotchi  {
       
    // Attribute
        
        
    long    zufallszahl1 ;     // Zufallszahl für die aufmerksamkeit
        
    long    zufallszahl2 ;    //  zufallszahl fürs füttern
        
    long    futter  100 ;
        
    // Konstruktoren
        
    public  Tuxgotchi (){
            
    this ( "tux" );
            
            
        }
        public 
    Tuxgotchi ( String dateiname ) {

            
    //zufallszahl1 = zufallszahl(20,40); // Zufallszahl für die aufmerksamkeit
            
    zufallszahl2  zufallszahl ( 30 , 50 );  // zufallszahl fürs füttern
            
            // Ausgabe in der Konsole.
            
    System . out . println ( this );
            
    fuetterAnzeige ();
            
    zeit ();
                    
        }

    // Methoden    

       // Gibt eine Repräsentation der Zeit für den Zeitpunkt "jetzt". Es kann damit in der Einheit Sekunden gerechnet werden.
        
    long jetzt () {
            return 
    System . currentTimeMillis () /  1000 ;
        }
        
        
    // Erzeugt eine Zufallszahl vom Typ int im gegebenen Bereich.
        
    int zufallszahl ( int von int bis ) {
            return (int) (
    Math . random () * ( bis  von  1 ) +  von );
        }
        
    // -------------------------------------------------------------------

        
    public  void aufmerksamkeitZeigen () {
            
    System . out . println ( "Ich bin jetz gut drauf" );
        }

        public 
    void fuettern () {
            
    // Muss noch implementiert werden.
        
    }

    // -------------------------------------------------------------------

        // Diese Methode legt fest, was z.B. Ausgegeben wird, wenn ein Objekt dieser Klasse in einer
        // System.out.println(referenzVariableDieserKlasse);
        // Anweisung in der Konsole ausgegeben werden soll.
        
    public  String toString () {
            return 
    getClass (). getSimpleName ();
        }

        
        public 
    void fuetterAnzeige () {
                    
            
    long sleepLaenge  zufallszahl2 * 0.1 ;       
       
    // Es wird berechnet in abhängigkeit von der Zufallszahl, wieviel 10 % der Zeit davon sind. 
            //System.out.println(zufallszahl2);
            
    double zw =((double) zufallszahl2 )* 0.1 ;
            
    System . out . println ( zw );
            
    long sleepLaenge =( long ) zw ;                
            
            
    //System.out.println(sleepLaenge);
                    // Lebenszeit : 30 s
            
            
            
    while( futter > 0 ){
         
                try{
    Thread . sleep ( sleepLaenge );
                }
                catch(
    InterruptedException m ){
                }           
                
    // Nun sind 10 % der Zeit vergangen
                
    futter  futter  - 10 ;
                
    System . out . println ( "Futteranzeige: " + futter + "%" );    
            }
            
    // Disp : Du bist tot
        
    }

    }
     
  2. 16. Januar 2010
    AW: Timer ohne sleep

    Code:
     
    Timer timer;
    timer = new Timer();
    timer.schedule(new taskTimer(), 1,1000);
    
    Code:
     public class taskTimer extends TimerTask {
     
     public void run() {
     
     
    
     }
     }
    
    
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.