paintMethode

SuperJavaMan

Mitglied
Hallo Leute :)

Ich hab hier ein programm welches zeichnen soll
tut es aber nicht was ist falsch?

hier die methode in welcher repaint aufgerufen wird

Java:
 public void dragged() {
        jp.addMouseMotionListener(new MouseMotionListener() {
@Override
            public void mouseDragged(MouseEvent e) {
                x = e.getX();
                y = e.getY();
                Random rand = new Random();
                System.out.println("x=" + x + ",y=" + y);
                String str = "";
                xyAusgabe.setText(str);
                str = String.format("X: %d Y: %d", x, y);
                xyAusgabe.setText(str);
                repaint();     //<---------------------REPAINT
            }
        });
    }

hier die die zeichnet

Java:
public void graphicsComponentRect(Graphics graphic) {
        Random rand = new Random();
        super.paint(graphic);
        Graphics g = jp.getGraphics();
        if (form == 1) {
            if (rainbowOk == 1) {
                col = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
                g.setColor(col);
            } else {
                g.setColor(col);
            }
            g.fillRect(x, y, thick, thick);
        }
    }

und hier der button

Java:
    public void drawRect() {
        rect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                form = 1;
            }
        });
    }

bedanke mich auch schon mal im vorraus
 

Harry Kane

Top Contributor
Erwartest du nach der Fehlerbeschreibung "Es soll zeichnen, macht es aber nicht" und den drei vollkommen aus dem Klassenkontext gerissenen Methoden ernsthaft Hilfe?
Was mir aufgefallen ist: Den Graphics, den du an
Code:
graphicsComponentRect(Graphics graphic)
übergibst, verwendest du gar nicht, sondern holst dir einen von jp (was für ein JPanel das auch immer sein mag). Und so (d. h. aktiv) sollte man grundsätzlich nicht zeichnen (es sei denn, es gibt sehr gute gründe dafür).
 

SuperJavaMan

Mitglied
jp ist das hauptpanel auf dem man zeichnet
und ich hab es auch so probiert
Java:
    public void graphicsComponentRect(Graphics g) {
    Random rand = new Random();
    super.paint(g);
    g = jp.getGraphics();
    if (form == 1) {
    if (rainbowOk == 1) {
    col = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
    g.setColor(col);
    } else {
    g.setColor(col);
    }
    g.fillRect(x, y, thick, thick);
    }
    }

hat aber dan auch nicht gezeichnet
um genauer meine frage zu formulieren
ich habe das zeichenprogramm anfangs mit Graphics g = jp.getGraphics(); laufen lassen
das gefällt mir aber nicht weil die zeichnung weg ist wenn man max- oder minimiert
deswegen habe ich gegoogelt und die paintmethode gefunden
ich hab sie noch nie benutzt also weiß ich nicht wie ich sie implemintieren soll
und ich dich bzw euch fragen will wie das geht
wenn das aktiv nicht zu realisieren ist würde ich mich freuen wenn du mir ein beispiel für passives zeichnen zeigen würdest :oops:

und wegen den methoden
die hab ich nur gewählt weil die für das zeichnen relevant sind (meiner meinung nach ;))

und noch danke für deine antwort wäre schön wenn du nochmal antwortest :)
 
Zuletzt bearbeitet:

Oben