首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖paintComponent

覆盖paintComponent
EN

Stack Overflow用户
提问于 2013-03-25 02:21:21
回答 1查看 13.1K关注 0票数 2

好的,在过去的26个小时里,我一直试图通过指南和在线帮助来解决这个问题,但没有成功。

我想做的就是当用户点击PaintPanel时画一个椭圆请来人帮帮我,这样我就可以睡觉了:P

在PaintApplet类中:

代码语言:javascript
复制
  private void PaintPanelMouseClicked(java.awt.event.MouseEvent evt) {                                        
    // TODO add your handling code here:
    if(FillRadioButton.isSelected())
    {
    PaintPanel.setBackground(JColor.getColor());
   PaintPanel.repaint();
    }
    if(BrushRadioButton.isSelected())
    {
         Point ComponentPoint = PaintPanel.getLocationOnScreen();
         PaintPanel.add(new Painter(ComponentPoint));
    }
}           

Painter类:

代码语言:javascript
复制
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
 import java.awt.*;

public class Painter extends JPanel{

Point  Component;

public Painter(Point Com)
{
    Component = Com;
}

public void paintComponent(Graphics g) 
{

        super.paint(g);
      Point CursorPoint=   MouseInfo.getPointerInfo().getLocation(); //gets cursorpoint

       int ComPX =  Component.x;
        int ComPY =  Component.y;
        int CurPX =  CursorPoint.x;
        int CurPY =  CursorPoint.y;
        int FinalX = CurPX - ComPX;
        int FinalY =  CurPY - ComPY;

       g.drawOval(FinalX, FinalY, 20, 20);




}
}
EN

回答 1

Stack Overflow用户

发布于 2013-03-25 02:30:28

不要打电话

代码语言:javascript
复制
super.paint(g);

paintComponent中。这将导致绘制链机制中的无限循环。相反,您需要

代码语言:javascript
复制
super.paintComponent(g);

要获得更好的帮助,可以考虑发布一个SSCCE

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15602235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档