Hallo,
Und zwar will ich für mein Projekt ein Mouseevent entwerfen, dass beim Klicken auf Buttons etc. Einen Mausklick symbolisiert. Dabei soll ein Halbkreis kleiner werden, wie in diesem Video gezeigt.
->
Ich weiß auch nicht, ob ich auf einem guten Weg bin oder nicht. So sehen erstmal meine Klassen aus wie Ich es gedacht habe.
public class Circle {
private int x;
private int y;
private int diameter;
private Color color;
public Circle(int x, int y, int diameter, Color color) {
super();
this.x = x;
this.y = y;
this.diameter = diameter;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getDiameter() {
return diameter;
}
public Color getColor() {
return color;
}
public void draw (GraphicsContext gc) {
gc.setStroke(Color.CORAL);
gc.setLineWidth(4);
gc.strokeOval(10, 20, 40, 40);
}
}
public class CircleClickListener extends MouseAdapter {
public CircleClickListener(CirclePanel panel) {
this.panel = panel;
}
private CirclePanel panel;
@Override
public void mouseClicked(MouseEvent e) {
panel.addCircle(new Circle(e.getX() - 12 ,e.getY() - 12, 24, Color.BLUE));
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
public class CirclePanel extends JPanel {
private List<Circle> circles = new LinkedList<Circle>();
public void addCircle(Circle circle) {
circles.add(circle);
this.repaint();
}
@Override
public void paint(Graphics g) {
for (Circle c : circles) {
c.draw(g);
}
}
}
public class Main {
public static void main(String[] args) {
JFrame window = new JFrame("Circles");
CirclePanel panel = new CirclePanel();
window.setContentPane(panel);
panel.addMouseListener(new CircleClickListener(panel));
window.setSize(500,500);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.setVisible(true);
}
}
Beim Klicken hatte ich vorher schon einen Kreis gezeichnet. Dies ist aber ja nicht genau die Umsetzung, die Ich versuche zu bekommen. Ich hoffe ihr könnt mir ein paar Tipps geben!
Und zwar will ich für mein Projekt ein Mouseevent entwerfen, dass beim Klicken auf Buttons etc. Einen Mausklick symbolisiert. Dabei soll ein Halbkreis kleiner werden, wie in diesem Video gezeigt.
->
Ich weiß auch nicht, ob ich auf einem guten Weg bin oder nicht. So sehen erstmal meine Klassen aus wie Ich es gedacht habe.
public class Circle {
private int x;
private int y;
private int diameter;
private Color color;
public Circle(int x, int y, int diameter, Color color) {
super();
this.x = x;
this.y = y;
this.diameter = diameter;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getDiameter() {
return diameter;
}
public Color getColor() {
return color;
}
public void draw (GraphicsContext gc) {
gc.setStroke(Color.CORAL);
gc.setLineWidth(4);
gc.strokeOval(10, 20, 40, 40);
}
}
public class CircleClickListener extends MouseAdapter {
public CircleClickListener(CirclePanel panel) {
this.panel = panel;
}
private CirclePanel panel;
@Override
public void mouseClicked(MouseEvent e) {
panel.addCircle(new Circle(e.getX() - 12 ,e.getY() - 12, 24, Color.BLUE));
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
public class CirclePanel extends JPanel {
private List<Circle> circles = new LinkedList<Circle>();
public void addCircle(Circle circle) {
circles.add(circle);
this.repaint();
}
@Override
public void paint(Graphics g) {
for (Circle c : circles) {
c.draw(g);
}
}
}
public class Main {
public static void main(String[] args) {
JFrame window = new JFrame("Circles");
CirclePanel panel = new CirclePanel();
window.setContentPane(panel);
panel.addMouseListener(new CircleClickListener(panel));
window.setSize(500,500);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.setVisible(true);
}
}
Beim Klicken hatte ich vorher schon einen Kreis gezeichnet. Dies ist aber ja nicht genau die Umsetzung, die Ich versuche zu bekommen. Ich hoffe ihr könnt mir ein paar Tipps geben!