Я не очень хорошо знаком с графикой на Java, извините. Тем не менее, это то, что я пытаюсь сделать. Я хочу, чтобы нарисовать пару точек на холсте (JPanel здесь), и иметь возможность перерисовывать точки каждый раз, когда метод (drawPoints) вызывается с помощью нового набора параметров: double [] xs, double [] ys. Любой шанс я мог бы сделать это без «перерисовки» холста? Я даже не могу получить точки для построения графика в текущем состоянии кода.произвести участок с несколькими точками в JPanel
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);
}
}
Вот еще один класс, который вызывает метод drawPoints из класса PlotPoints. Я получил этот фрагмент кода из некоторого StackOverflow Q & As, и попытался импровизировать на нем в соответствии с моими потребностями. Если другая структура больше подходит, я буду благодарна за ваш обмен.
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!
}
}
'' Любой шанс, что я мог бы сделать это без «перерисовки» холста? »' - почему бы не повторно рисовать компонент, или здесь вы просто будете называть 'repaint()'? –