Java 用鼠标听器画画?
我试图用一个简单的矩形网格制作一个程序,如果用户点击一个矩形,它就会被填充成黑色。我遇到的问题是,我的mouseClicked方法无法访问我的paintComponent方法,因此我得到了一个错误 以下是相关代码:Java 用鼠标听器画画?,java,swing,debugging,events,graphics,Java,Swing,Debugging,Events,Graphics,我试图用一个简单的矩形网格制作一个程序,如果用户点击一个矩形,它就会被填充成黑色。我遇到的问题是,我的mouseClicked方法无法访问我的paintComponent方法,因此我得到了一个错误 以下是相关代码: public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; super.paintComponent(g2); g2.setColor(Color.BLACK); f
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
super.paintComponent(g2);
g2.setColor(Color.BLACK);
for(Rectangle2D rect : squares) {
g2.draw(rect);
}
}
public void mouseClicked(MouseEvent e) {
if((e.getX()>RECT_WIDTH && e.getX()<RECT_WIDTH+(game.getSize()-1)*BOX_DIM) && (e.getY()>RECT_HEIGHT && e.getY()<RECT_HEIGHT+(game.getSize()-1)*BOX_DIM)) {
Point2D point = new Point2D.Double(e.getX(), e.getY());
Rectangle2D rect = findRect(point);
g.setColor(Color.BLACK);
g.fill(rect);
repaint();
}
}
public Rectangle2D findRect(Point2D p) {
for(Rectangle2D rect : squares) {
if(rect.contains(p)) {
return rect;
}
}
return null;
}
公共组件(图形g){
图形2d g2=(图形2d)g;
超级组件(g2);
g2.设置颜色(颜色为黑色);
用于(矩形2D矩形:正方形){
g2.绘制(rect);
}
}
公共无效mouseClicked(MouseEvent e){
如果在列表对象中((e.getX()>RECT_WIDTH&&e.getX()RECT_HEIGHT&&e.getY()),则需要存储包含两条信息的对象:
矩形
矩形的颜色
当您单击矩形
时,您将遍历列表
,找到单击的矩形
,然后更新该矩形
的颜色
属性并调用repaint()
在调用draw()方法之前,还需要更改绘制代码以设置矩形的颜色
查看中的DrawOnComponent
示例。它显示了如何创建自定义对象以存储两个属性,以及如何在paintComponent()方法中绘制此对象