java zeichnen Sie einen Kreis, wenn die Maus geklickt
ich Schreibe ein Programm, dass, wenn die Maus geklickt wird, wird ein Kreis gezeichnet werden soll. Den folgenden code habe ich bisher schrieb.
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.event.*;
import java.awt.geom.*;
public class test extends JFrame implements ActionListener, MouseListener {
Shape circle = new Ellipse2D.Float(10, 10, 10, 10);
public test () {
setSize(250,150);
addMouseListener(this);
}
public static void main(String[] args) {
//TODO code application logic here
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
test frame = new test();
frame.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent ae) {
}
public void drawCircle(int x, int y) {
Graphics g = this.getGraphics();
g.drawOval(x, y, x, y);
g.setColor(Color.BLACK);
g.fillOval(x, y, 2, 2);
}
public void mouseClicked(MouseEvent e) {
drawCircle(e.getX(), e.getY());
repaint();
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
}
Der code ist ein 400X400 jframe, wenn geklickt haben, öffnen Sie einen Kreis auf eine halbe Sekunden, Das problem ist, dass, wenn ich die Maustaste loslassen, wird der Kreis verschwinden. warum?
wie kommt diese getGraphics Chaos breitet sich rund um eine Lehrerin, die wild gegangen?
InformationsquelleAutor hkguile | 2011-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie Ihre
mouseClick(...)
:Überschreiben
paint(...)
:InformationsquelleAutor wannik
Beim Aufruf
repaint()
die Komponente wird Malte wieder von Grund. Du bist der Kreis ist wie weggewischt. Sie überschreiben möchtenpaintComponent(Graphics)
die jedesmal aufgerufen, wenn die Komponente gezeichnet.Ja, ich dachte zu erwähnen, dass, aber diese Frage schien wie eine Hausaufgaben-Frage, also ließ ich es zu ihm. 🙂
gefangen wieder... 😀 Sowieso überschreiben paintComponent(Graphics) wäre zu schwer, wenn es die Hausaufgaben
Beachten Sie, dass die OP mit der Malerei in eine top-level-container.
JFrame
und andere TLCs haben keinepaintComponent(Graphics)
Methode. OTOH ist es am besten nicht überschreibenpaint(Graphics)
in einem TLC, aber Sie können stattdessen eineJComponent
oderJPanel
- das hat sich daspaintComponent(Graphics)
Methode.InformationsquelleAutor Adam Paynter