Maus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo Leute,
    ich hab da mal ne frage:
    Köntt ihr mir sagen was man bei blue j alles mit ner maus machen klann??
    Also die Maus befehle??
    Z.b ob man den linke Taste von der rechten unterscheiden kann??
    ich hab Z.b gard das Problem das ein Mausklick als mehrere hundert angesehen wird.
    Wieso??
    :thumbsup: 8o :pinch: :whistling: :?: :?: :?: :?: :?: :?: :?:
    Mfg Ödeee
  • Hey !
    Sorry für das Geschmiere grad, ich hatte es etwas eilig.
    Also, ich schreib grad aus Spaß mit BlueJ ein Paint-ähnliches Programm:
    Das klappt auch schon ganz gut:
    Wenn ich aber die Linienbreite verändern will, indem man die Maus auf ein Feld dafür klickt,
    erhöht oder verringert sich die Linienbreite viel zu schnell:
    Wisst ihr, wie ich das ändern kann??
    Mein Code bisher:

    Quellcode

    1. import sum.kern.*;
    2. public class Paint
    3. { Bildschirm derBildschirm;
    4. BuntStift meinStift;
    5. Maus meineMaus;
    6. int Breite;
    7. int a1;
    8. public Paint()
    9. {
    10. derBildschirm = new Bildschirm(1000,550);
    11. meinStift = new BuntStift();
    12. meineMaus = new Maus();
    13. zeichneFelder();
    14. zeichneBild();
    15. }
    16. void zeichneFelder()
    17. {//Schwarzes Feld
    18. meinStift.hoch();
    19. meinStift.bewegeBis(500,500);
    20. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    21. meinStift.setzeFarbe(Farbe.SCHWARZ);
    22. meinStift.zeichneRechteck(50,50);
    23. //Rotes Fels
    24. meinStift.hoch();
    25. meinStift.bewegeBis(550,500);
    26. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    27. meinStift.setzeFarbe(Farbe.ROT);
    28. meinStift.zeichneRechteck(50,50);
    29. // Oranges Feld
    30. meinStift.hoch();
    31. meinStift.bewegeBis(600,500);
    32. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    33. meinStift.setzeFarbe(Farbe.ORANGE);
    34. meinStift.zeichneRechteck(50,50);
    35. //Blaues Feld
    36. meinStift.hoch();
    37. meinStift.bewegeBis(650,500);
    38. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    39. meinStift.setzeFarbe(Farbe.BLAU);
    40. meinStift.zeichneRechteck(50,50);
    41. //Radierer
    42. meinStift.hoch();
    43. meinStift.bewegeBis(700,500);
    44. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    45. meinStift.setzeFarbe(Farbe.WEISS);
    46. meinStift.zeichneRechteck(50,50);
    47. meinStift.bewegeBis(700,525);
    48. meinStift.setzeSchriftgroesse(10);
    49. meinStift.setzeFarbe(Farbe.SCHWARZ);
    50. meinStift.schreibeText("Radieren");
    51. //Cyanfarbenes Feld
    52. meinStift.hoch();
    53. meinStift.bewegeBis(750,500);
    54. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    55. meinStift.setzeFarbe(Farbe.CYAN);
    56. meinStift.zeichneRechteck(50,50);
    57. //Magentafarbenes Feld
    58. meinStift.hoch();
    59. meinStift.bewegeBis(800,500);
    60. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    61. meinStift.setzeFarbe(Farbe.MAGENTA);
    62. meinStift.zeichneRechteck(50,50);
    63. //Zahl-Feld
    64. meinStift.hoch();
    65. meinStift.bewegeBis(850,500);
    66. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    67. meinStift.setzeFarbe(Farbe.WEISS);
    68. meinStift.zeichneRechteck(50,50);
    69. meinStift.bewegeBis(860,537.5D);
    70. meinStift.setzeFarbe(Farbe.SCHWARZ);
    71. meinStift.setzeSchriftgroesse(35);
    72. String breite= (new Integer(Breite)).toString();
    73. meinStift.schreibeText(breite);
    74. //Breiten-Feld-größer
    75. meinStift.hoch();
    76. meinStift.bewegeBis(900,500);
    77. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    78. meinStift.setzeFarbe(Farbe.SCHWARZ);
    79. meinStift.zeichneRechteck(50,25);
    80. meinStift.bewegeBis(900,525);
    81. meinStift.setzeFarbe(Farbe.WEISS);
    82. meinStift.setzeSchriftgroesse(10);
    83. meinStift.schreibeText("Größer");
    84. //Breiten-Feld-kleiner
    85. meinStift.hoch();
    86. meinStift.bewegeBis(900,525);
    87. meinStift.setzeFuellmuster(Muster.GEFUELLT);
    88. meinStift.setzeFarbe(Farbe.ROT);
    89. meinStift.zeichneRechteck(50,25);
    90. meinStift.bewegeBis(900,550);
    91. meinStift.setzeFarbe(Farbe.WEISS);
    92. meinStift.setzeSchriftgroesse(10);
    93. meinStift.schreibeText("Kleiner");
    94. }
    95. // Dienste
    96. public void zeichneBild()
    97. {a1=0;
    98. Breite = 10;
    99. zeichneFelder();
    100. meinStift.setzeFarbe(Farbe.WEISS);
    101. // Aktionsteil
    102. while (a1!=1)//!dieMaus.doppelKlick())
    103. {
    104. if (meineMaus.istGedrueckt())
    105. {if((meineMaus.hPosition()>=500)&&(meineMaus.vPosition()>=500)//Die Maus im schwarzen Feld
    106. &&(meineMaus.hPosition()<=550)&&(meineMaus.vPosition()<=550))
    107. {meinStift.setzeFarbe(Farbe.SCHWARZ);}
    108. if((meineMaus.hPosition()>=550)&&(meineMaus.vPosition()>=500)//Die Maus im roten Feld
    109. &&(meineMaus.hPosition()<=600)&&(meineMaus.vPosition()<=550))
    110. {meinStift.setzeFarbe(Farbe.ROT);}
    111. if((meineMaus.hPosition()>=600)&&(meineMaus.vPosition()>=500)//Die Maus im orangem Feld
    112. &&(meineMaus.hPosition()<=650)&&(meineMaus.vPosition()<=550))
    113. {meinStift.setzeFarbe(Farbe.ORANGE);}
    114. if((meineMaus.hPosition()>=650)&&(meineMaus.vPosition()>=500)//Die Maus im blauem Feld
    115. &&(meineMaus.hPosition()<=700)&&(meineMaus.vPosition()<=550))
    116. {meinStift.setzeFarbe(Farbe.BLAU);}
    117. if((meineMaus.hPosition()>=700)&&(meineMaus.vPosition()>=500)//Die Maus im Radier-Feld
    118. &&(meineMaus.hPosition()<=750)&&(meineMaus.vPosition()<=550))
    119. {meinStift.setzeFarbe(Farbe.WEISS);}
    120. if((meineMaus.hPosition()>=750)&&(meineMaus.vPosition()>=500)//Die Maus im Cyan-Feld
    121. &&(meineMaus.hPosition()<=800)&&(meineMaus.vPosition()<=550))
    122. {meinStift.setzeFarbe(Farbe.CYAN);}
    123. if((meineMaus.hPosition()>=800)&&(meineMaus.vPosition()>=500)//Die Maus im Magenta-Feld
    124. &&(meineMaus.hPosition()<=850)&&(meineMaus.vPosition()<=550))
    125. {meinStift.setzeFarbe(Farbe.MAGENTA);}
    126. if((meineMaus.hPosition()>=900)&&(meineMaus.vPosition()>=500)//Die Maus im Größer-Feld
    127. &&(meineMaus.hPosition()<=950)&&(meineMaus.vPosition()<=525))
    128. {Breite++;
    129. zeichneFelder();}
    130. if((meineMaus.hPosition()>=900)&&(meineMaus.vPosition()>=525)//Die Maus im Kleiner-Feld
    131. &&(meineMaus.hPosition()<=950)&&(meineMaus.vPosition()<=550))
    132. {Breite--;}
    133. else{
    134. meinStift.bewegeBis(meineMaus.hPosition(),meineMaus.vPosition());
    135. meinStift.setzeLinienBreite(Breite);
    136. meinStift.runter();
    137. }}
    138. else
    139. {meinStift.hoch();}
    140. }
    141. }}
    Alles anzeigen



    Tut mir leid, dass der Code jetzt nicht farbig ist;klappt irgendwie nicht.
    Ich hoffe ihr könnt jetzt verstehen,was mein Problem ist und mir helfen,

    Mfg Ödeee

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ödeee ()

  • Ich hab deinen Code mal bunt gemacht. Dein Problem ist folgendes: Du fragst in einer While-Schleife ab ob die Maus sich in einem 4eck befindet und gedrückt ist und wenn ja dann machst du etwas. Nehmen wir an diese While-Schleife läuft locker 1000mal in der Sekunde. Wenn du also mit der Maus auch nur eine 10tel Sekunde auf eine Fläche drückst wird der Code schon 100mal ausgeführt. Beim Wechseln der Farbe ist das kein Problem (es ist vom Ergbnis egal wie oft man "meinStift.setzeFarbe(Farbe.ROT);" ausführt), aber beim verändern der Dicke halt schon (es ist halt nicht egal wie oft man "meinStift.runter();" hintereinander ausführt).

    Zur Lösung: Ich meine dunkel zu erinnern, dass es in Java sogenannte ActionListener für die Maus gibt, die dich bei einem Klickereignis informieren.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Soweit ich mich erinnere war die Maus bei dem komischen BlueJ eine Implementierung von MouseListener.
    Baue dir doch eine Unterklasse von Maus und überschreibe die mouseClicked()-Methode. Die Methode wird genau dann aufgerufen wenn die Maus einmal geklickt hat. Damit brauchst du nicht mit der hässlichen Endlosschleife (schau mal deine Prozessorlast an, du belastet einen CPU die ganze Zeit für 100%) arbeiten. Diese ist nämlich schlicht falsch.