g.drawLine in g 2D casten

Dieses Thema im Forum "Java Basics - Anfänger-Themen" wurde erstellt von feldmarv, 4. Juli 2011.

  1. feldmarv

    feldmarv Neues Mitglied

    Hallo

    Ich bin Java Anfänger und habe ein Frage.
    Ich zeichne eine Linie mit g.drawLine(x, y, x2, y2);
    Die Koordinaten werden per MouseListener ausgelesen und ich kann die Linie sauber mit der Maus zeichnen. Aber nun wollte ich die Dicke der Linie einstellen können.
    Dazu habe ich im Forum gelesen, dass ich diese g.drawLine Methode in eine Graphics 2D "casten" soll.
    Aber wie muss ich das machen.

    (http://www.java-forum.org/java-basics-anfaenger-themen/48211-dicke-graphics-ovject-einstellen.html)

    Vielen Dank für die Hillfe.
    feldmarv
     
  2. SlaterB

    SlaterB Guest

    das Graphics-Object g sollst du casten,
    siehe z.B.
    Java2D: An Introduction and Tutorial
    den Code unter '2.1 Drawing Shapes: Overview'
    bzw. fast in jedem Beispiel dort

    welche Methoden Graphics2D hat aber besser nachschlagen,
    oder wie man an der grundsätzlichen Cast-Frage sieht, besser ganze Tutorial lesen wie das angegebene
    oder sogar noch zu weiteren Grundlagen wie Casten
     
  3. feldmarv

    feldmarv Neues Mitglied

    Hat geklappt. Ein anderer Forumbeitrag hat auch noch geholfen :D

    Vielen Dank.

    g.drawLine(x, y, x2, y2);
    Graphics2D g2 = ( Graphics2D )g;
    g2.setStroke(new BasicStroke(3));
     
  4. beastofchaos

    beastofchaos Neues Mitglied

    Wenn du ganz faul bist:

    Code (Text):
    ((Graphics2D) g).setStroke(new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 0));
    bzw. für dich noch kürzer:
    Code (Text):
    ((Graphics2D) g).setStroke(new BasicStroke(3));
    auch wenn du dafür 2 Klammern mehr machen musst xD
     
  5. Marco13

    Marco13 Gesperrter Benutzer

    Code wie
    Code (Text):

    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        ((Graphics2D)g).drawThis(...);
        ((Graphics2D)g).drawThat(...);
        ((Graphics2D)g).drawHere(...);
        ((Graphics2D)g).drawThere(...);
        ((Graphics2D)g).drawSomething(...);
    }
     
    sollte man IMHO nicht schreiben. Besser
    Code (Text):

    protected void paintComponent(Graphics gr)
    {
        super.paintComponent(gr);
        Graphics2D g = (Graphics2D)g;
        g.drawThis(...);
        g.drawThat(...);
        g.drawHere(...);
        g.drawThere(...);
        g.drawSomething(...);
    }
     
     
  6. beastofchaos

    beastofchaos Neues Mitglied

    Dann natürlich schon, aber bei so einem Einzeiler geht das ja noch ;)
     
Die Seite wird geladen...