[Java] while problem

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

Schlagworte:
  1. 12. November 2010
    while problem

    ich denke das mir hier einige sicherlich weiterhelfen können

    ich bin ziemlich neu was das gebiet java angeht, was heißen soll das auch ne kurze erklärung was ihr da gemacht habt oder wo das problem war ganz nice wäre; ich will nicht das andere etwas für mich lösen.... ich will nur herausfinden wies machbar wird

    kommen wir dann zum eigentlichen problem...

    ich hab in java einen Stift, ein Fenster und die Maus "gemacht"

    (der stift hat funktionen wie stift.hoch(); = der stift wird angehoben , stift.runter(); = der stift wird abgesetzt und stift.bewegeBis(...) und sowas)

    nun hatte ich vor das ganze so zu machen, das der Stift der maus folgt.... was ich im endeffekt so versucht habe zu lösen

    Code:
    public void fuehreAus() {
     
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     
     
     while (maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
    }
    das ganze will aber nicht so recht, sprich es öffnet sich ein fenster, aber wenn ich hinenklicke und die maus bewege tut sich nichts... was ich etwas komisch finde, ist das wenn ich folgendes schreibe
    Code:
     
     while (! maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
    also "wenn die maus nicht gedrückt ist", läuft alles , also der stift malt der maus nach ohne das ich klicke....

    ich wills aber eigentlich andersrum, weils so eher weniger sinn macht

    schnelle hilfe mit kurzer erklärung wär klasse

    danke schonmal
     
  2. 12. November 2010
    AW: while problem

    lasst du die Methode fuehreAus() in deiner Main in einer Endlosschleife laufen? Falls du das nicht tust wundert mich das Ergebnis nicht. Dein Programm überprüft so ein mal ob deine Maus geklickt ist. Dies ist ja nicht der Fall und das wars dann mit der Schleife.
     
  3. 12. November 2010
    AW: while problem

    fuehreAus(); steht inner main

    hier mal der komplette code

    Code:
    package maus;
    
    import basis.*;
    
    public class Maus1 {
     private Fenster fenster;
     private Stift stift;
     private Maus maus;
    
     
     public void gibFrei(){
     stift.gibFrei();
     maus.gibFrei();
     fenster.gibFrei();
     }
     
     
     public Maus1() {
     /* Bereitstellen, Initialisierungsteil */
     fenster = new Fenster();
     stift=new Stift();
     maus = new Maus();
     }
    
     
     public void fuehreAus() {
     /*Arbeiten, Aktionsteil */
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     
     
     while (!maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
     
     
     
     }
    }
    
    
     
  4. 12. November 2010
    AW: while problem

    genau das was ich vermutet hatte. Bastel um

    Code:
     public void fuehreAus() {
     /*Arbeiten, Aktionsteil */
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     
     
     while (!maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
    eine Endlosschleife oder bau dir ein timer event, dass diesen code alle 10 ms ausführt
     
  5. 12. November 2010
    AW: while problem

    klappt nicht

    genauso wenig versteh ich den sinn dahinter den befehl darauf zu warten das die maus geklickt wird ständig zu weiderholen?!
     
  6. 12. November 2010
    AW: while problem


    Ich hätte jetzt behauptet, dass du die ganze Sache in das MouseMoved Event geschrieben hast, anstatt in das MouseDragged.
    Also im Mouse Listener
     
  7. 12. November 2010
    AW: while problem

    ich versteh garnix
     
  8. 12. November 2010
    AW: while problem

    dein programm besteht doch nicht nur aus der oben genannten klasse
    oder?
    denn dann würd ja gar nichts passieren

    irgendwo musst du ja abfragen ob geklickt wird und wo die maus sich befindet
     
  9. 12. November 2010
    AW: while problem

    es besteht aus 2 klassen

    aber in der einen steht nichts besonderes..

    Code:
    package maus;
    
    public class Maus2 {
    
     public static void main(String[] args) {
     Maus1 meinMaus1 = new Maus1();
     meinMaus1.fuehreAus();
    
     }
    
    }
    
     
  10. 12. November 2010
    AW: while problem

    irgendwo wird ja abgefragt wo sich die maus befindet

    wohl in der klasse Maus
    da ist wahrscheinlich das Problem
     
  11. 12. November 2010
    AW: while problem

    wie gesagt, dass ist alles was in der klasse steht

    Code:
    package maus;
    
    import basis.*;
    
    public class Maus1 {
     private Fenster fenster;
     private Stift stift;
     private Maus maus;
    
     
     public void gibFrei(){
     stift.gibFrei();
     maus.gibFrei();
     fenster.gibFrei();
     }
     
     
     public Maus1() {
     /* Bereitstellen, Initialisierungsteil */
     fenster = new Fenster();
     stift=new Stift();
     maus = new Maus();
     }
    
     
     public void fuehreAus() {
     /*Arbeiten, Aktionsteil */
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     
     
     while (!maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
     
     
     
     }
    }
     
  12. 14. November 2010
    AW: while problem

    und wo ist da die Main? Poste mal die Klasse, die du ausführst.
     
  13. 14. November 2010
    AW: while problem

    ich hab 2 klassen, immernoch

    Klasse 1
    Spoiler
    Code:
    package maus;
    
    public class Maus2 {
    
     public static void main(String[] args) {
     Maus1 meinMaus1 = new Maus1();
     meinMaus1.fuehreAus();
    
     }
    
    }

    Klasse2
    Spoiler
    Code:
    package maus;
    
    import basis.*;
    
    public class Maus1 {
     private Fenster fenster;
     private Stift stift;
     private Maus maus;
    
     
     public void gibFrei(){
     stift.gibFrei();
     maus.gibFrei();
     fenster.gibFrei();
     }
     
     
     public Maus1() {
     /* Bereitstellen, Initialisierungsteil */
     fenster = new Fenster();
     stift=new Stift();
     maus = new Maus();
     }
    
     
     public void fuehreAus() {
     /*Arbeiten, Aktionsteil */
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     
     
     while (maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
     
     
     
     }
    }

    Klasse 1 führe ich aus....
     
  14. 14. November 2010
    AW: while problem

    Poste bitte mal dein ganzes Programm, ich habe irgendwie den verdacht, dass da gar nichts so richtig zusammen passt. Bevor wir hier weiter Rätsel raten.

    ZIP/RAR -> xup.in
     
  15. 14. November 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: while problem

    ich hoffe mal das klappt so alles

    Download: http:statsshare-linksbiz796649d45f976d5b7301915c32623319gif.gif | www.xup.in

    ich hab das programm mit eclipse geschrieben,

    der Stift folgt Maus ordner in der rar müsste dann in den eclipse ordner rein, und die basis für den stift, (auch in dem stift folgt maus ordner glaub ich) müsste in java/jre6/lib/ext oder sowas

    hoffe ihr kriegt das gebacken, wie gesagt, bin neu auf dem gebiet und kenn mich da jetz noch nicht so aus
     
  16. 14. November 2010
    AW: while problem

    Ein Versuch wäre:

    Code:
    while (maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
    }
    Diesen Teil packst du in eine Endlosschleife, oder am besten so:

    Code:
    while (!maus.istRechtsGedrucket()) {
     while (maus.istGedrueckt() && !maus.istRechtsGedrucket()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
    }
    Dann solltest du mit der rechten Maustatse alles beenden können und mit der linken Maustaste zeichnen. Falls das nicht geht, dann wird das Problem wohl in der Implementierung der Maus FUnktionen liegen.

    greez
     
  17. 14. November 2010
    AW: while problem

    also soweit hat sich das problem irgendwie von selbst behoben ?(

    naja egal hauptsache es läuft.... nur läuft alles etwas sehr komisch und ich versteh das programm nicht

    ich habs jetz so hinbekommen, das der stift zeichnet wenn ich klicke,

    das problem jetzt war, dass wenn ich mit meiner maus weitergegangen bin und dann wieder geklickt habe er selbstverständlich eine linie dorthin gezogen hat wo die maus war,

    das probelm hab ich auch hinbekommen, jetzt hab ich mich an den radierer gesetzt und das ganze so versucht:

    Code:
     while(true){
    
     while (maus.istRechtsGedrueckt()) {
     stift.setzeLinienBreite(50);
     stift.radiere();
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.setzeLinienBreite(1);
     stift.normal();
     }
     
     while (maus.istGedrueckt()) {
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     }
     
     while (!maus.istGedrueckt()) {
     stift.hoch();
     stift.bewegeBis(maus.hPosition(),maus.vPosition());
     stift.runter();
     }
    ich mein der radierer funktioniert..... aber nur wenn ich rechte UND linke maustaste drücke, was ich sehr verwirrend finde weil ich ja eigentlich nur .istRechtsGedrückt geschrieben habe ?(
     
  18. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.