Aufruf einer anderen Klasse durch Button ActionListener

Diskutiere Aufruf einer anderen Klasse durch Button ActionListener im AWT, Swing, JavaFX & SWT Bereich.
N

ngcrocoo

Hallo,

ich will mithilfe einer GUI eine "Leinwand" erstellen, auf der frei gezeichnet werden kann.
Ich habe eine Klasse "GUI", in dieser befindet sich der Button "Frei zeichnen". Wenn er gedrückt wird, soll man auf der Leinwand zeichnen können. Es gibt eine weitere Klasse namens "FreiZeichnen", dort sind alle Sachen für das Zeichnen implementiert.

Code:
import java.util.ArrayList;
import java.util.List;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
import java.awt.*;

public class FreiesZeichnen extends JPanel {

List<Point> points;

    public FreiesZeichnen() {

        points = new ArrayList<>();
        addListenersZeichnen();
    }

    private void addListenersZeichnen() {
        this.addMouseMotionListener(new MouseMotionListener() {

            @Override
            public void mouseDragged(MouseEvent e) {

                FreiesZeichnen.this.points.add(e.getPoint());
                repaint();
            }
        });
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.RED);

        for (Point point: points) {
            g2.fillOval(point.x, point.y, 5, 5);
        }
    }
}



Hier der Ausschnitt aus der Klasse GUI:

Code:
private JPanel initPanelNorth() {

        panelNorth = new JPanel();
        panelNorth.setLayout(new FlowLayout(FlowLayout.CENTER));

        ButtonGroup gruppe = new ButtonGroup();
        freiesZeichnen = new JRadioButton("Freies Zeichnen");

        panelNorth.add(freiesZeichnen);
        gruppe.add(freiesZeichnen);

        freiesZeichnen.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                if (e.getSource() == freiesZeichnen) {
                    malen = new FreiesZeichnen();
                }
            }
        });
}
Leider tut sich gar nichts, wenn der Button gedrückt wird. Hat jemand eine Idee? Danke schonmal
 
VfL_Freak

VfL_Freak

Moin,

das musst Du schon programmieren !

Derzeit wird doch beim Buttonklick lediglich ein leere ArrayListe angelegt (wofür??) und ein MouseMotionListener hinzugefügt (habe jetzt nicht geprüft ob das alles überhaupt funktioniert, sieht aber irgendwie seltsam aus)

Wie soll den gezeichnet werden ?

VG Klaus
 
N

ngcrocoo

Naja, sobald die Maustaste gedrückt wird, wird der Punkt an dieser Stelle in der Array Liste gespeichert. In der paintComponent()-Methode werden diese Punkte mithilfe einer foreach-Schleife durchlaufen und durch die fillOval()-Methode gezeichnet. Theoretisch 😅
 
Thema: 

Aufruf einer anderen Klasse durch Button ActionListener

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben