Рисование простого линейного графика на Java

В моей программе я хочу нарисовать простой линейный график очков. У меня есть текстовый файл, и в каждой строке есть целочисленная оценка, которую я прочитал и хочу передать в качестве аргумента моему классу графика. У меня возникли проблемы с реализацией класса графа, и все примеры, которые я видел, имеют свои методы в том же классе, что и их основной, чего у меня не будет.

Я хочу иметь возможность передать свой массив объекту и сгенерировать график, но при вызове моего метода рисования он запрашивает у меня Graphics 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);
        }
    }
}
24
задан Peter Mortensen 6 November 2014 в 19:32
поделиться

1 ответ

Переопределите метод paintComponent вашей панели, чтобы вы могли рисовать по своему усмотрению. Как это:

@Override
public void paintComponent(Graphics g) {
    Graphics2D gr = (Graphics2D) g; //this is if you want to use Graphics2D
    //now do the drawing here
    ...
}
3
ответ дан 28 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: