Kreis vergrößern/verkleinern mit Buttons

scsv2504

Mitglied
Hallo, die Aufgabe ist die Folgende: Es soll ein Kreis gezeichnet werden, dieser soll dann mit dem entsprechenden Button um jeweils 1 Pixel vergrößert/verkleinert werden. Mein Problem ist jetzt, wie ich die Breite/Höhe des Ovals ändern kann. Meine Idee war den Punkt in einer Collection abzuspeichern und dann irgendwie setWidth setHeight aufzurufen, jedoch komme ich damit nicht weiter.

Der Code:
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class kreiskleingross extends JPanel implements ActionListener{
    Point punkt=new Point(-50, -50);
    JButton b1=new JButton("Größer");
    JButton b2=new JButton("Kleiner");
    Collection<Point> punkte=new HashSet<Point>();
   
    kreiskleingross(){
        setLayout(new BorderLayout());
        b1.addActionListener(this);
        b2.addActionListener(this);
        add(b1, BorderLayout.WEST); add(b2, BorderLayout.EAST);
        mouse m=new mouse();
        addMouseListener(m);
        addMouseMotionListener(m);
    }
   
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==b1) {
        for(Point p: punkte) {
       
            }
        }
        if(e.getSource()==b2) {
           
        }
    }
   
    public void paintComponent(Graphics g) {
        g.fillOval(punkt.x-25, punkt.y-25, 50, 50);
       
       
    }
   
    class mouse extends MouseAdapter{
        public void mousePressed(MouseEvent e) {
            punkte.clear();
            punkt =e.getPoint();
            punkte.add(punkt);
            repaint();
        }
    }
public static void main(String[] args) {
    JFrame mf=new JFrame();
    mf.setSize(250, 150);
    mf.setVisible(true);
    mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JComponent n=new kreiskleingross();
    mf.setContentPane(n);
    n.setOpaque(false);
    }
}
 
Naja, Du musst Dir halt den aktuellen Radius merken, z. B.
Java:
private int radius;
Bei Veränderung kannst Du die Komponente neu zeichnen:
Java:
void changeRadius(int delta) {
    radius += delta;
    repaint();
}
Dann brauchst Du lediglich die Zeile
Java:
g.fillOval(punkt.x-25, punkt.y-25, 50, 50);
so umzuschreiben, dass der Kreis entsprechend des Radius gezeichnet wird.

Die Buttons rufen dann changeRadius mit geeignetem delta auf.
 

Neue Themen


Zurück
Oben