【发布时间】:2018-09-02 17:35:33
【问题描述】:
我正在尝试更改我在按下鼠标后所做的点的颜色。因此,理想情况下,您将在程序运行时连续绘制随机颜色的点。似乎无法弄清楚这一点,因为如果我尝试在侦听器中引用图形“页面”,则无法识别。如果我将随机颜色线放在图形构造函数中,那么程序会以一种随机颜色运行,并且每个点都不会改变。
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
public class DotsPanel extends JPanel {
private final int SIZE = 6; // radius of each dot
Random rand = new Random();
private ArrayList<Point> pointList;
Color randomColor = new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
public DotsPanel() {
pointList = new ArrayList<Point>();
addMouseListener(new DotsListener());
addMouseMotionListener(new DotsListener());
setBackground(Color.black);
setPreferredSize(new Dimension(300, 200));
}
public void paintComponent(Graphics page) {
super.paintComponent(page);
for (Point spot : pointList) {
page.setColor(randomColor);
page.fillOval(spot.x - SIZE, spot.y - SIZE, SIZE * 2, SIZE * 2);
}
page.drawString("Count: " + pointList.size(), 5, 15);
}
private class DotsListener implements MouseListener, MouseMotionListener {
public void mousePressed(MouseEvent event) {
pointList.add(event.getPoint());
repaint();
}
public void mouseDragged(MouseEvent event) {
pointList.add(event.getPoint());
repaint();
}
public void mouseClicked(MouseEvent event) {
}
public void mouseReleased(MouseEvent event) {
}
public void mouseEntered(MouseEvent event) {
}
public void mouseExited(MouseEvent event) {
}
public void mouseMoved(MouseEvent e) {
}
}
}
【问题讨论】:
标签: java swing graphics listener panel