В моей программе я хочу нарисовать простой график строк. У меня есть текстовый файл, и на каждой строке есть целочисленный балл, который я читал и хочу передать в качестве аргумента для моего класса графа. У меня возникли проблемы с реализацией класса графа, и все примеры, которые я видел, имеют свои методы в том же классе, что и их основной, которых у меня не будет.
Я хочу передать свой массив объекту и сгенерировать граф, но при вызове моего метода рисования он запрашивает у меня графику g... Это то, что у меня есть до сих пор:
public class Graph extends JPanel {
public void paintGraph (Graphics g){
ArrayList<Integer> scores = new ArrayList<Integer>(10);
Random r = new Random();
for (int i : scores){
i = r.nextInt(20);
System.out.println(r);
}
int y1;
int y2;
for (int i = 0; i < scores.size(); i++){
y1 = scores.get(i);
y2 = scores.get(i+1);
g.drawLine(i, y1, i+1, y2);
}
}
}
Теперь я вставил простой генератор случайных чисел, чтобы заполнить мой массив.
У меня есть существующий фрейм и в основном хочу создать экземпляр класса Graph и установить панель на мой кадр. Мне очень жаль, что этот вопрос кажется таким путаным, но я немного спал...
Код в моем основном заявлении:
testFrame = new JFrame();
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Graph graph = new Graph();
testFrame.add(graph);
Я не уверен, что такое SSCE, но это моя попытка:
public class Test {
JFrame testFrame;
public Test() {
testFrame = new JFrame();
testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Graph graph = new Graph();
testFrame.add(graph);
testFrame.setBounds(100, 100, 764, 470);
testFrame.setVisible(true);
}
Graph.java
public class Graph extends JPanel {
public Graph() {
setSize(500, 500);
}
@Override
public void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D) g; // This is if you want to use Graphics2D
// Now do the drawing here
ArrayList<Integer> scores = new ArrayList<Integer>(10);
Random r = new Random();
for (int i : scores) {
i = r.nextInt(20);
System.out.println(r);
}
int y1;
int y2;
for (int i = 0; i < scores.size() - 1; i++) {
y1 = (scores.get(i)) * 10;
y2 = (scores.get(i + 1)) * 10;
gr.drawLine(i * 10, y1, (i + 1) * 10, y2);
}
}
}