Java 在JPanel中生成具有多个点的绘图

Java 在JPanel中生成具有多个点的绘图,java,swing,jframe,jpanel,graphics2d,Java,Swing,Jframe,Jpanel,Graphics2d,对不起,我不太熟悉Java中的图形。然而,这正是我想要做的。我希望能够在画布上绘制几个点(这里是JPanel),并且能够在每次使用一组新参数调用方法(drawPoints)时重新绘制点:double[]xs,double[]ys。我有没有可能不用“重画”画布就能做到这一点?在代码的当前状态下,我甚至无法获得要绘制的点 import java.awt.Graphics; import java.awt.Color; import java.awt.Graphics2D; import javax.

对不起,我不太熟悉Java中的图形。然而,这正是我想要做的。我希望能够在画布上绘制几个点(这里是JPanel),并且能够在每次使用一组新参数调用方法(drawPoints)时重新绘制点:double[]xs,double[]ys。我有没有可能不用“重画”画布就能做到这一点?在代码的当前状态下,我甚至无法获得要绘制的点

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics2D;
import javax.swing.JPanel;
import javax.swing.JFrame;


public class PlotPoints extends JPanel {    
double[] x;
double[] y;

public void paintComponent (Graphics g)     
{
    super.paintComponent(g);
    Graphics2D g2d  = (Graphics2D) g;
    g2d.setColor(Color.black);
    for (int i=0; i<x.length; i++){
        g2d.fillOval((int)this.x[i],(int)this.y[i], 10, 10);            
    }
}

public void drawPoints(double[]xs, double[]ys){
    JFrame frame = new JFrame("Points");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.x=xs.clone();
        this.y=ys.clone();
        frame.add(new PlotPoints());
        frame.setSize(100, 100);//laptop display size
        frame.setVisible(true);
}
}
导入java.awt.Graphics;
导入java.awt.Color;
导入java.awt.Graphics2D;
导入javax.swing.JPanel;
导入javax.swing.JFrame;
公共类PlotPoints扩展了JPanel{
双[]x;
双[]y;
公共组件(图形g)
{
超级组件(g);
Graphics2D g2d=(Graphics2D)g;
g2d.setColor(Color.black);
对于(int i=0;i
我有没有可能不用“重画”画布就能做到这一点

当然可以。将它们绘制到本身显示在
JLabel
中的
BuffereImage
。例如,如中所示

但是不要太快这样做。Java-2D可以在
paint()
方法中设置数千个图形元素的动画

我有没有可能不用“重画”画布就能做到这一点

当然可以。将它们绘制到本身显示在
JLabel
中的
BuffereImage
。例如,如中所示

但是不要太快这样做。Java-2D可以在
paint()
方法中设置数千个图形元素的动画

我有没有可能不用“重画”画布就能做到这一点

当然可以。将它们绘制到本身显示在
JLabel
中的
BuffereImage
。例如,如中所示

但是不要太快这样做。Java-2D可以在
paint()
方法中设置数千个图形元素的动画

我有没有可能不用“重画”画布就能做到这一点

当然可以。将它们绘制到本身显示在
JLabel
中的
BuffereImage
。例如,如中所示

但是不要太快这样做。Java-2D可以在
paint()
方法中设置数千个图形元素的动画。

“我有没有可能不用“重画”画布就可以做到这一点?”
--为什么不重新绘制组件,或者在这里,您只需调用
repaint()
“有没有可能我不用‘重画’画布就可以这样做?”
--为什么不重新绘制组件,或者在这里,您只需调用
repaint()
“有没有可能我不用‘重画’画布就可以这样做?”
--为什么不重新绘制组件,或者在这里,您只需调用
repaint()
”有没有可能不用“重新绘制”画布就可以完成此操作?
——为什么不重新绘制组件,或者在这里,您只需调用
repaint()
import java.lang.*;
public class MainClass {
double[] xcoords;
double[] ycoords;
public static void main(String[] args){
    //create instances of classes
    PlotPoints myPlots=new PlotPoints();
    MainClass myMain=new MainClass();

    //initialize coordinates
    myMain.xcoords=new double[5];
    myMain.ycoords=new double[5];

    //put values into coordinates
    for (int i=0; i<5; i++){
        myMain.xcoords[i]=Math.random()*1000; //Random number 
        myMain.ycoords[i]=Math.random()*1000;
    }

    //Create a plotter. Plot
    //to draw points defined by: (xcoords[i],ycoords[i])
    myPlots.drawPoints(myMain.xcoords, myMain.ycoords);

    //Please do this!       
}