/ / В java, можете ли да направите линейна графика от два масива? - Java, масиви, графики

В Java, можете ли да направите линейна графика от две маси? - java, масиви, графика

Искам да направя линейна графика с x стойности 1-100и y стойности, вариращи от 1-18. Имам ги съхраняват в две масиви, които в момента печат в текстови файлове (по очевидни причини аз не искам да ръчно да направи графика, състояща се от 100 точки). Може би нещо, което използва прозореца на приложението?

Аз не знам какво повече информация мога да ви дам, за да я направите по-ясно какво искам от тях, така че ако има нещо, просто попитайте за него и го поставете по-добре.

Отговори:

1 за отговор № 1

Може би нещо такова?

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public final class LineGraph {
private LineGraph() {

}

public static void main(final String[] args) {
SwingUtilities.invokeLater(LineGraph::doRun);
}

private static void doRun() {
final int[] x = new int[] {0, 40, 80, 120, 160, 200, 240, 280, 320, 360};
final int[] y = new int[] {100, 200, 100, 50, 200, 0, 300, 200, 100, 300};

final
JFrame jFrame = new JFrame();
jFrame.getContentPane().setLayout(new BorderLayout());
jFrame.getContentPane().add(new JPanelImpl(x, y), BorderLayout.CENTER);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(800, 600);
jFrame.setVisible(true);
}

private static final class JPanelImpl extends JPanel {
private final int[] x;
private final int[] y;

public JPanelImpl(final int[] x, final int[] y) {
this.x = x;
this.y = y;
}

@Override
public void paintComponent(final Graphics graphics) {
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, getWidth(), getHeight());

for(int i = 0; i < this.x.length; i++) {
if(i + 1 < this.x.length) {
final int x0 = this.x[i];
final int y0 = this.y[i];
final int x1 = this.x[i + 1];
final int y1 = this.y[i + 1];

graphics.setColor(Color.BLACK);
graphics.drawLine(x0, y0, x1, y1);
graphics.fillOval(x1 - 3, y1 - 3, 6, 6);
}
}
}
}
}