Java 限制JPanel上的绘图区域并保存图形状态

Java 限制JPanel上的绘图区域并保存图形状态,java,swing,graphics2d,Java,Swing,Graphics2d,黑色JPanel的用途是绘图 如何将图形限制为直线形成的圆的半径 是否有办法保存图形对象状态,以便可以向其中添加更多图形以及添加撤消功能 公共组件(图形g) { 超级组件(g); 扇区=12; Graphics2D g2d=(Graphics2D)g; g2d.setColor(Color.RED); 扇区=newline2d.Double(getWidth()/2,0,getWidth()/2,getHeight()); //setClip(新的Ellipse2D.Double(getW

黑色
JPanel
的用途是绘图

  • 如何将图形限制为直线形成的圆的半径

  • 是否有办法保存图形对象状态,以便可以向其中添加更多图形以及添加撤消功能

公共组件(图形g)
{
超级组件(g);
扇区=12;
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.RED);
扇区=newline2d.Double(getWidth()/2,0,getWidth()/2,getHeight());
//setClip(新的Ellipse2D.Double(getWidth()/2,getHeight()/2,radius,radius));
//在屏幕上绘制扇区

对于(int i=0;i对于你的第一个问题

您需要仔细阅读Java的定制绘画

不是让你气馁但这是一个棘手的过程, 为了回答你的问题,这里有一个类似的帖子

你能为黑色JPanelI添加代码吗?只需将其颜色设置为黑色并给出一个大小。其他所有内容都在paintComponent()中。1)为了尽快获得更好的帮助,请发布一个或。2)“如何将绘图限制在由线条形成的圆的半径范围内?”3)“有办法吗…”哇!这是一个问答网站,不是服务台。每个具体问题都应该是独立的,并且有自己的问题线索。我建议你删除这篇文章中的第二个问题,否则它有被关闭为“太宽”的风险。我没有冒险的问题。“我没有冒险的问题。”你刚刚冒了被否决的风险。恭喜!你赢了一次。还有一个提示:提示:添加@Kennedy(或任何人,
@
很重要),通知此人新的评论。
public void paintComponent(Graphics g)
{
    super.paintComponent(g);

    sectors = 12;

    Graphics2D g2d = (Graphics2D) g;    
    g2d.setColor(Color.RED);

    sector = new Line2D.Double(getWidth()/2, 0, getWidth()/2, getHeight());
    //g2d.setClip(new Ellipse2D.Double(getWidth()/2,getHeight()/2, radius, radius));


    //draws the sectors on the screen
    for(int i=0; i<sectors; i++)
    {   
        g2d.draw(sector);
        g2d.rotate(Math.toRadians(30),getWidth()/2,getHeight()/2);
    }

    //draws the doily
    if(dragging)
    {
        for(int i=0; i<sectors; i++)
        {
            g2d.fillOval((int) draw.getX(), (int) draw.getY(),20, 20);
            g2d.rotate(Math.toRadians(30), getWidth()/2, getHeight()/2);
        }

        //saves the current drawing in a stack
        graphics.push(g2d);
    }
}