gpt4 book ai didi

java - 在 JPanel 中生成包含多个点的图

转载 作者:行者123 更新时间:2023-12-01 23:25:48 25 4
gpt4 key购买 nike

抱歉,我对 Java 中的图形不太熟悉。然而,这就是我正在尝试做的事情。我希望能够在 Canvas 上绘制几个点(这里是 JPanel),并且能够在每次使用一组新参数调用方法 (drawPoints) 时重新绘制这些点:double[]xs、double[]ys。我有机会在不“重画” Canvas 的情况下做到这一点吗?我什至无法在代码的当前状态下绘制点。

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);
}
}

这是从 PlotPoints 类调用“drawPoints”方法的另一个类。我从一些 StackOverflow 问答中获得了这段代码片段,并尝试对其进行即兴创作以满足我的需求。如果不同的结构更适合,我将不胜感激您的分享。

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!
}

}

最佳答案

Any chance I could do this without 'redrawing' the canvas?

当然。将它们绘制到本身显示在 JLabel 中的 BufferedImage。例如。如 this answer中所示.

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

关于java - 在 JPanel 中生成包含多个点的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com