Java程序|我在构造函数中给出了什么图形?

Java程序|我在构造函数中给出了什么图形?,java,swing,graphics,Java,Swing,Graphics,我在构造器中给出了什么图形?系统提供的图形,您不需要,请查看并获取有关Swing中绘画工作原理的更多详细信息 如果要更新组件,则应调用repaint Swing中的绘制是通过被动算法完成的,为了提高性能,您不应该在任何绘制方法中修改状态或调用任何可能修改UI状态的功能,因此您应该删除绘制方法中的重新绘制调用 按照惯例,我们被鼓励覆盖paintComponent而不是paint,这样做更安全 绘制应该绘制组件的当前状态,这意味着您需要将一些变量设置为所需的值,并调用repaint以更新它们 /*I

我在构造器中给出了什么图形?

系统提供的图形,您不需要,请查看并获取有关Swing中绘画工作原理的更多详细信息

如果要更新组件,则应调用repaint

Swing中的绘制是通过被动算法完成的,为了提高性能,您不应该在任何绘制方法中修改状态或调用任何可能修改UI状态的功能,因此您应该删除绘制方法中的重新绘制调用

按照惯例,我们被鼓励覆盖paintComponent而不是paint,这样做更安全

绘制应该绘制组件的当前状态,这意味着您需要将一些变量设置为所需的值,并调用repaint以更新它们

/*If given constructor values draw moving circle
 * But if it does not give him the values ​​draws a line
 */
package samr;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
public class AX{
    public static class panel extends JPanel{
        public int w,c=1;
        public panel(int start,int end){
            int x=start;
            int y=end;
            w=x;
            paint(?,x,y);
        }
        public panel(){
            paint(?);
        }
        public void paint(Graphics e){
            e.drawLine(0,0,500,500);
        }
        public void paint(Graphics g,int x,int y){
                    super.paint(g);
                    if(w<=y){
                        w=w+c;
                        if(w==x||w==y){c=c*-1;}
                        g.drawOval(w,0,50,50);
                        this.repaint();
                    }
        }
    }
    public static void main(String[] arg){
        JFrame f=new JFrame("test");
            f.setBounds(100,100,500,500);
        panel p=new panel(100,300);
            f.add(p);
            f.setVisible(true);
    }
}