tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Fabio Hellmann
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
551
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KarlPichler KarlPichler ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Beiträge
    62
    Hallo Java Profis,

    (Java 1.1.8)
    Ich habe ein Programm erstellt welches Linien und Kreise zeichnet.
    Nun möchte ich wenn man mit der Maus über eine Linie fährt, das diese in einer anderen Farbe eingeblendet wird. Bei Anklick sollten sich danach sämtliche optionen einblenden.

    Alles halb sowild, allerdings habe ich null Plan wie ich den Maus-Listener implementieren muss. Ich bitte daher um eure Unterstüzung. Beispielcode wäre vom Feinsten.

    Eine weitere Frage: kann ich die Strichstärke einer Linie irgendwie modifizieren? (Ich arbeite mit AWT in der Java Version 1.1.8)

    lg
     

  2. #2
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    ich würde das folgendermaßen machen. Ersteinmal der MouseMotionListener - für die Mausbewegung.
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    public void mouseMoved(MouseEvent e) {
       final int x = e.getX();
       final int y = e.getY();  
     
       for(MyLine line : lineList) {
          if(line.contains(x, y)) {
             line.setColor(Color.RED); // Wenn Maus über der Linie ist
          } else {
             line.setColor(Color.BLACK); // Wenn Maus wo anders ist
          }
       }
    }
    Dann die MyLine-Klasse:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    public class MyLine extends Line2D {
       private Color c = Color.BLACK;
     
       // ...
     
       public void setColor(Color c) {
          this.c = c;
       }
     
       public Color getColor() {
          return c;
       }
    }
    Ich denke mal, dass das eine recht komfortable Lösung ist. Falls du Fragen dazu haben solltest, zögere nicht.

    ps.: Ob das so auch in der Java 1.1.8 Version geht, weiß ich nicht, da ich das nicht testen konnte.

    Gruß

    Fabio
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  3. #3
    KarlPichler KarlPichler ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Beiträge
    62
    Hallo,
    Danke erstmals für die rasch antwort!
    So nun bekomme ich die momentane Position der Maus mit, ich kann auch ein Event auslösen (großer Erfolg für Java Idioten ).
    Wie kann ich nun die Linien in eine Liste schreiben? mein Problem ist das ich etwas Toleranz (2-3 Pixel) benötige, ich meine damit das wenn er 2pixel neben die Linie klickt, auch als ein Treffer gewertet wird!
    lg
     

  4. #4
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Also die MyLine-Klasse in eine Liste bekommen geht ganz einfach:
    Code java:
    1
    2
    3
    
    List<MyLine> lineList = new ArrayList<MyLine>();
    // ...
    lineList.add(new MyLine(x, y, x1, y1));

    Um eine Toleranz zu ermöglichen wirst du wahrscheinlich die Methode "contains(x, y)" von der Super-Klasse "Line2D" überschreiben müssen. Sprich:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    public class MyLine extends Line2D {
       private Color c = Color.BLACK;
     
       // ...
     
       @Override
       public boolean contains(int x, int y) {
          // Hier deine Berechnung machen
       }
     
       public void setColor(Color c) {
          this.c = c;
       }
     
       public Color getColor() {
          return c;
       }
    }

    Gruß

    Fabio
    KarlPichler bedankt sich. 
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  5. #5
    KarlPichler KarlPichler ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Beiträge
    62
    upps, wir erst ab Java 1.5 unterstützt!

    muss ichs doch mit nem Array versuchen.

    Lg
     

Ähnliche Themen

  1. DrawLine in Bitmap konvertieren und vergrössern
    Von alex-test im Forum .NET Grafik und Sound
    Antworten: 2
    Letzter Beitrag: 20.12.07, 17:44
  2. MouseListener JDK 1.3.1 vs JDK 1.5
    Von zerix im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 31.08.07, 12:18
  3. [VC++] Zeichenbefehle? Bessere anstelle von drawLine usw...
    Von the incredible Leitman im Forum VisualStudio & MFC
    Antworten: 39
    Letzter Beitrag: 20.02.07, 18:34
  4. JButton in der linken oberen ecke nach drawLine
    Von Fu-Schnickens im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 11.01.06, 00:48
  5. "drawLine" für eine eclipse View
    Von Zerwas im Forum Java
    Antworten: 4
    Letzter Beitrag: 14.07.04, 15:42

Stichworte