使用 Java Swing 在鼠标单击上绘制点
Draw point on mouse click with Java Swing
我正在开发一个项目,在该项目中,我尝试使用 Java Swing 在 JPanel 中单击鼠标绘制点。
我每次都将点击的点坐标保存在 currentX 和 currentY 中,并使用这些坐标创建一个 Ellipse2D 列表,但它不起作用。
我解决了它并且有效!解决方案下方:
package progetto;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Anna
*/
public class MapDrawer extends JPanel{
private List<Point> points = new ArrayList<>();
public MapDrawer(){
setBackground(new Color(23,99,8));
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e){
points.add(new Point(e.getX(), e.getY()));
repaint();
}
});
}
@Override
public void paintComponent (Graphics g){
super.paintComponent(g);
Graphics g2 = (Graphics2D) g;
g2.setColor(Color.gray);
for (Point p : points){
g2.fillOval(p.x, p.y, 5, 5);
}
}
public static void main(String [] args){
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame();
frame.add(new MapDrawer());
frame.setSize(400,400);
frame.setVisible(true);
}
});
}
}
我正在开发一个项目,在该项目中,我尝试使用 Java Swing 在 JPanel 中单击鼠标绘制点。
我每次都将点击的点坐标保存在 currentX 和 currentY 中,并使用这些坐标创建一个 Ellipse2D 列表,但它不起作用。
我解决了它并且有效!解决方案下方:
package progetto;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Anna
*/
public class MapDrawer extends JPanel{
private List<Point> points = new ArrayList<>();
public MapDrawer(){
setBackground(new Color(23,99,8));
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e){
points.add(new Point(e.getX(), e.getY()));
repaint();
}
});
}
@Override
public void paintComponent (Graphics g){
super.paintComponent(g);
Graphics g2 = (Graphics2D) g;
g2.setColor(Color.gray);
for (Point p : points){
g2.fillOval(p.x, p.y, 5, 5);
}
}
public static void main(String [] args){
EventQueue.invokeLater(new Runnable(){
@Override
public void run(){
JFrame frame = new JFrame();
frame.add(new MapDrawer());
frame.setSize(400,400);
frame.setVisible(true);
}
});
}
}