[Java] Vorgangs"pause?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von sft-FTW, 1. Oktober 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 1. Oktober 2010
    Vorgangs"pause?!

    sorry falls es die frage hier schonmal gab ich habe gerade garkeine ahnung wonach ich suchen soll

    also vorab erstmal als erklärung, das dass was ihr gleich evtll. seht meine erste Arbeit mit Java ist....

    ich hab 2 fenster erstellt , in denen jeweils was mit einem "Stift" gezeichnet wurde.... unter anderem ein Haus vom Nikolaus..... ( in einem der fenster [deinStift] habe ich ein Q zeichnen lassen , was hier in meiner frage aber gerade eher nebensache ist ^^)

    wenn ich ihm nun sage wie er die striche zeichnen soll und so weiter , macht er das gleich alles auf einmal , .... wie bringe ich ihm bei das er strich für strich macht? quasi eine pause zwischen den vorgängen macht? oder per mausklick den nächsten vorgang ausführt ^^ das wäre auch extrem nice

    hier erstmal mein "ding"

    Spoiler
    Code:
    package arbeit1;
    
    import basis.*;
    
    public class Test {
     Fenster deinFenster; //Deklaration
     Fenster meinFenster;
     Stift deinStift;
     Stift meinStift;
     
     public void fuehreAus(){
     deinFenster = new Fenster("Nikolaus",800,900); //Initialisierung
     deinStift = new Stift (); 
     meinFenster = new Fenster("Weihnachtsmann",800,900);
     meinStift = new Stift();
     
     
     deinFenster.setzeHintergrundFarbe(Farbe.MAGENTA);
    
     
     deinStift.setzeLinienBreite(5);
     deinStift.bewegeBis(100,100);
     deinStift.runter();
     deinStift.zeichneKreis(60);
     deinStift.hoch();
     deinStift.bewegeBis(120,120);
     deinStift.runter();
     deinStift.bewegeBis(165,165);
     
     
     meinFenster.setzeHintergrundFarbe(Farbe.BLAU);
     
     meinStift.setzeLinienBreite(5);
     meinStift.bewegeBis(100,150);
     meinStift.runter();
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(150,50);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(200,150);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,150);
     meinStift.bewegeBis(200,150);
     
     
     
     }
     
     
    }
    

    ja google spuckt viel aus, aber immer kommt eine fehlermeldung und ich versteh auch nicht so ganz was die da machen also würd ich mich auch über ne gute erklärung sehr freuen

    danköö
     
  2. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Was du suchst ist die sleep Funktion, mit dem der ausführende Thread für x Millisekunden schlafen gelegt wird.

    http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Thread.html#sleep(long)

    Code:
    public class test {
     public static void main(String[] args) {
     System.out.println("Hallo Welt");
     warte(2000);
     System.out.println("2 Sekunden spaeter");
     }
     
     private static void warte(int millis) {
     try {
     Thread.sleep(millis);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
    }
    greez
     
  3. 2. Oktober 2010
    AW: Vorgangs"pause?!

    ok erstmal danke für deine antwort.... aber wo muss das ganze denn jetzt hin?

    hab ich das so richtig?

    Spoiler
    Code:
    package arbeit1;
    
    import basis.*;
    
    public class Test {
     
     
     public static void main(String[] args) {
     System.out.println("Hallo Welt");
     warte(2000);
     System.out.println("2 Sekunden spaeter");
     }
     
     private static void warte(int millis) {
     try {
     Thread.sleep(millis);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
     
     
     
     
     Fenster deinFenster; //Deklaration
     Fenster meinFenster;
     Stift deinStift;
     Stift meinStift;
     
     public void fuehreAus(){
     deinFenster = new Fenster("Nikolaus",800,900); //Initialisierung
     deinStift = new Stift (); 
     meinFenster = new Fenster("Weihnachtsmann",800,900);
     meinStift = new Stift();
     
     
     deinFenster.setzeHintergrundFarbe(Farbe.MAGENTA);
    
     
     deinStift.setzeLinienBreite(5);
     deinStift.bewegeBis(100,100);
     deinStift.runter();
     deinStift.zeichneKreis(60);
     deinStift.hoch();
     deinStift.bewegeBis(120,120);
     deinStift.runter();
     deinStift.bewegeBis(165,165);
     
     
     meinFenster.setzeHintergrundFarbe(Farbe.BLAU);
     
     meinStift.setzeLinienBreite(5);
     meinStift.bewegeBis(100,150);
     meinStift.runter();
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(150,50);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(200,150);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,150);
     meinStift.bewegeBis(200,150);
     
     
     
     }
     
     
    }
    

    ?

    oder muss ich zwischen den ganzen befehlen von meinStift auch nochmal klar machen das da ne pause kommen soll? weil so passiert eigentlich garnichts .....
     
  4. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Nein, mein Code war nur ein Beispiel. Du kannst dir meien Funktion warte() kopieren und in deine Klasse schreiben und dann immer, wenn du eine bestimmte Zeit warten willst die FUnktion aufrufen mit warte(Anzahl der Millisekunden).

    Die main Funktion kannst du rausschmeißen.

    greez
     
  5. 2. Oktober 2010
    AW: Vorgangs"pause?!

    also quasi so ?

    Code:
    meinStift.runter();
     meinStift.bewegeBis(100,100);
     warte(2000);
     meinStift.bewegeBis(150,50);
     warte(2000);
     meinStift.bewegeBis(200,100);
    ist das das einzigste was ich machen muss ? oder muss ich ihm irgendwie noch sagen was "warte" ist?

    weil wenn ich das nur so mache kommt folgende fehlermeldung:

    "the method warte(int) is undefined for the typ test"

    übrigens auch undefiniert für den stift
     
  6. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Du musst die Funktionsdeklaration natürlich drin lassen, sonst kennt er die Funktion natürlich nicht. Also so ungefähr:

    Code:
    package arbeit1;
    
    import basis.*;
    
    public class Test { 
     private static void warte(int millis) {
     try {
     Thread.sleep(millis);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
    
     Fenster deinFenster; //Deklaration
     Fenster meinFenster;
     Stift deinStift;
     Stift meinStift;
     
     public void fuehreAus(){
     deinFenster = new Fenster("Nikolaus",800,900); //Initialisierung
     deinStift = new Stift (); 
     meinFenster = new Fenster("Weihnachtsmann",800,900);
     meinStift = new Stift();
     
     
     deinFenster.setzeHintergrundFarbe(Farbe.MAGENTA);
    
     
     deinStift.setzeLinienBreite(5);
     deinStift.bewegeBis(100,100);
     deinStift.runter();
     deinStift.zeichneKreis(60);
     deinStift.hoch();
     deinStift.bewegeBis(120,120);
     deinStift.runter();
     deinStift.bewegeBis(165,165);
     
     
     meinFenster.setzeHintergrundFarbe(Farbe.BLAU);
     
     meinStift.setzeLinienBreite(5);
     meinStift.bewegeBis(100,150);
     meinStift.runter();
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(150,50);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,100);
     meinStift.bewegeBis(200,150);
     meinStift.bewegeBis(200,100);
     meinStift.bewegeBis(100,150);
     meinStift.bewegeBis(200,150);
     }
    }
    Dann solltest du irgendwo in der Klasse warte(1000) oder so aufrufen können.

    greez
     
  7. 2. Oktober 2010
    AW: Vorgangs"pause?!

    cool danke, jetzt gehts


    könntest du vielleicht "versuchen" mir auch noch zu zeigen wie man per mausklick den nächsten vorgang starten kann?
     
  8. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Dafür bräuchte ich die Klassen, die ihr wahrscheinlich vom Lehrer bekommen habt, da ich nicht weiß, ob der Klick schon irgendwie abgefangen wird, damit man ihn verarbeiten kann. Also alles was mit Stift und so zu tun hat.

    greez
     
  9. 2. Oktober 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Vorgangs"pause?!

    jo wir haben ne datei bekommen für den stift....

    hab sie dir mal geuppt

    No File | www.xup.in

    aber soweit ich weis ist ein klick oder so nicht vorgespeichert... ka
     
  10. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Okay, du brauchst eine Maus. Maus ist eine Klasse, die auf bestimmte Dinge reagiert. Also Instantiierst du eine Maus mit
    Code:
    Maus meineMaus;
    in public void fuehreAus() kommt dann noch ein
    Code:
    meineMaus = new Maus();
    Die Klasse Maus hat die istGedrueckt() Funktion, die untersucht, ob die Maus gedrückt wurde. Mit einer Schleife können wir dann also auf den mausklick warten. Am besten mit einer Funktion "warteAufKlick()" oder so.
    Code:
    private static void warteAufKlick(Maus dieMaus) {
     while (!dieMaus.istGedrueckt()) {
     Thread.sleep(100);
     }
    }
    Jetzt schreibst du einfach vor jeden Schritt, der bei MausKlick ausgeführt werden soll:
    Code:
    warteAufKlick(meineMaus);
    Die Informationen habe ich hier her:
    informatik-treff.de | The Best Place To Find In Format Ik Treff

    Konnte leider nicht alles testen, sollte aber funzen.

    greez
     
  11. 2. Oktober 2010
    AW: Vorgangs"pause?!

    ich hab einfach mal alles so gemacht wie du es gesagt hast:

    Code:
    package arbeit1;
    
    import basis.*;
    
    public class Test {
     
    
     private static void warteAufKlick(Maus dieMaus) {
     while (!dieMaus.istGedrueckt()) {
     Thread.sleep(100);
     }
     }
     
    
     Fenster meinFenster; //Deklaration
     Stift meinStift;
     Maus meineMaus;
     
     public void fuehreAus(){
     
     
     meinFenster = new Fenster("Nikolaus",800,900); //Initialisierung
     meinStift = new Stift();
     meineMaus = new Maus();
     
    
     meinFenster.setzeHintergrundFarbe(Farbe.BLAU);
    
     
     meinStift.setzeLinienBreite(5);
     meinStift.bewegeBis(100,150);
     meinStift.runter();
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(100,100); 
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(150,50); 
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(200,100);
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(100,100);
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(200,150);
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(200,100);
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(100,150);
     warteAufKlick(meineMaus);
     meinStift.bewegeBis(200,150);
     
     
     
     }
     
     
    }


    es kommt auch keine großartige fehlermeldung oder so..... und es öffnet sich auch ein fenster, aber wenn ich klicke passiert nichts..... linke rechte und mausrad ausprobiert...
     
  12. 2. Oktober 2010
    AW: Vorgangs"pause?!

    Hab gerade das Exception handling vergessen. Eigentlich darf das so nicht kompiliert werden. Die Funktion muss so aussehen:

    Code:
    private static void warteAufKlick(Maus dieMaus) {
     while (!dieMaus.istGedrueckt()) {
     try {
     Thread.sleep(100);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
    }
    Ich kann es leider nicht testen; Mir fehlt wohl noch irgendwo was außer der .jar Datei.

    greez

    //Nun funzt es bei mir. Hatte vergessen bei java den -cp Parameter anzugeben.

    SChreib die Funktion so:
    Code:
    private static void warteAufKlick() {
     Maus meineMaus = new Maus();
     while (!meineMaus.istGedrueckt()) {
     try {
     Thread.sleep(100);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
     }
    Und dannrufst du warteAufKlick immer so auf:
    Code:
    warteAufKlick();
    (also ohne Parameter)

    Das hat genau so gefunzt, auch mit Klicks.

    Der ganze Code:
    Spoiler
    Code:
    package arbeit1;
    
    import basis.*;
    
    public class Test {
     private static void warteAufKlick() {
     Maus meineMaus = new Maus();
     while (!meineMaus.istGedrueckt()) {
     try {
     Thread.sleep(100);
     }
     catch (InterruptedException exc) {
     System.out.println(exc);
     }
     }
     }
     
    
     Fenster meinFenster; //Deklaration
     Stift meinStift;
     
     
     public void fuehreAus(){
     
     
     meinFenster = new Fenster("Nikolaus",800,900); //Initialisierung
     meinStift = new Stift();
    
     meinFenster.setzeHintergrundFarbe(Farbe.BLAU);
     
     meinStift.setzeLinienBreite(5);
     meinStift.bewegeBis(100,150);
     meinStift.runter();
     warteAufKlick();
     meinStift.bewegeBis(100,100); 
     warteAufKlick();
     meinStift.bewegeBis(150,50); 
     warteAufKlick();
     meinStift.bewegeBis(200,100);
     warteAufKlick();
     meinStift.bewegeBis(100,100);
     warteAufKlick();
     meinStift.bewegeBis(200,150);
     warteAufKlick();
     meinStift.bewegeBis(200,100);
     warteAufKlick();
     meinStift.bewegeBis(100,150);
     warteAufKlick();
     meinStift.bewegeBis(200,150);
     }
    }
     
  13. 2. Oktober 2010
    AW: Vorgangs"pause?!

    wir auf jeden fall schonmal ein stück weiter

    wenn ich jetzt klicke, dann kommt das haus, nur kommt alles auf einmal ^^ (ich wollte ja das die striche hintereinander kommen)

    gibts nicht irgendeinen befehl um den vorgang zu unterbrechen oder so?

    quasi so

    meinstift warte auf klick
    meinstift bewegeBis.....

    unterbrechen

    meinstift warte auf klick
    ..
    .
    .


    oder sowas?
     
  14. 3. Oktober 2010
    AW: Vorgangs"pause?!

    Es geht afaik nur auf dem Weg wie ich es oben gepostet habe. Die Maus hat nicht so die ÜBER-Methoden, deshalb den Umweg über die Schleife. Hoffe ich konnte dir damit helfen, bei mir hat es geklappt. Jeder Klick fügte dem haus eine Komponente hinzu. (Striche).

    greez
     
  15. 3. Oktober 2010
    AW: Vorgangs"pause?!

    jo klappt alles ...

    bedankt vielmals
     
  16. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.