![]() |
| Implement MouseAdapter for JComponent |
package javaswingdrawing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
/**
* @web http://java-buddy.blogspot.com/
*/
public class JavaSwingDrawing extends JComponent {
int mouseX, mouseY;
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
createAndShowGUI();
});
}
public JavaSwingDrawing() {
addMouseListener(myMouseAdapter);
}
MouseAdapter myMouseAdapter = new MouseAdapter(){
@Override
public void mousePressed(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
repaint();
}
};
@Override
public void paint(Graphics g) {
Graphics2D graphics2d = (Graphics2D)g;
graphics2d.setColor(Color.blue);
graphics2d.fillOval(mouseX-5, mouseY-5, 10, 10);
}
private static void createAndShowGUI() {
JFrame myFrame = new JFrame();
myFrame.setTitle("java-buddy.blogspot.com");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(new Dimension(400, 300));
myFrame.setLayout(new BorderLayout());
myFrame.add(new JavaSwingDrawing(), BorderLayout.CENTER);
myFrame.setVisible(true);
}
}
Next: Detect mousePressed and mouseDragged with MouseAdapter

Hi, nice tuto but could I ask that, how to make dont show the initial oval? Thank you.
ReplyDelete