Как сделать Panel, Frame и т. Д. В Java для отображения графика? - PullRequest
0 голосов
/ 10 декабря 2011

NB: я никогда раньше не использовал Swing, ни графику 2D, и я не очень много программирую ...

Я пытаюсь создать программу, которая использует массив / векторв качестве ввода.Этот массив, в котором каждый индекс 0,1,2 и т. Д. Содержит либо ноль, либо единицу (целое число) - который представляет «отсутствие активности» или «активность» в минуту 0,1,2 и т. Д. *

Я хочупрограмма для рисования прерывистой прямой горизонтальной линии - представляющей «активность» против «отсутствие активности» как функцию времени - на основе массива, который был взят в качестве входных данных.И это должно появиться на панели, когда я запускаю код. Идея состоит в том, чтобы показать активность / отсутствие активности как функцию времени, поэтому желательно, чтобы линия отображалась на графике (ось х и ось у)... И будет несколько таких прерывистых линий друг над другом - для сравнения разных случаев.

Я пытался какое-то время смотреть на примеры с использованием свинга и графики 2D, но так как у меня очень ограниченное количествовремени - мне действительно нужна помощь ..

Любой код, который:

  • создает панель, фрейм и т. д. - где я "легко" могу видеть, куда я могу вставить свой график: это панель, которая готова отображать график, который я заставлю
  • нарисовать график прерывистых горизонтальных линий на основе массива, как описано выше

... очень ценится:)

добавлено из комментария:

Извините - не закончил свой ответ :) Я мог бы попытаться узнать, как использовать все различные вещи в рамах Swing, панелях и т. Д. Но вмомент мой майn цель состоит в том, чтобы закончить мое задание для школы - то есть визуализацию самих данных - и им на самом деле все равно, как вы туда доберетесь, главное, чтобы они визуализировали что-то полезное ... Поэтому я подумал, что могу уменьшитьвремя, которое я должен был потратить на это, если бы я получил некоторый код, который мог бы начать меня - и не должен был изучать, как все это работает сначала.

Ответы [ 2 ]

4 голосов
/ 10 декабря 2011

Не нужно учить Graphics2D, просто перейдите на JFreeChart.Вот простое учебное пособие для начала работы (хотя требуется минимум знаний в области программирования на Java)

2 голосов
/ 10 декабря 2011

Это пример, я думаю, это поможет

import java.awt.*;
import javax.swing.*;

public class ActivityGraph extends JFrame {

int[] active = {0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1};
int length = 25, //basic length in pixels for drawing the lines
        offset = 50; //so the lines aren't sticked at the border

private ActivityGraph(String name, int x, int y, int width, int height) {
    super(name);
    setBounds(x, y, width, height);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JPanel panel = new GraphPanel();
    //panel.setBounds(0, 0, 800, 400); not nessesary
    add(panel);
}

public static void main(String[] args) {
    new ActivityGraph("Activity Graph", 60, 60, 800, 400).setVisible(true);
}

private class GraphPanel extends JPanel {

    public void paint(Graphics g) {
        g.setColor(Color.white);
        g.fillRect(0, 0, 800, 400);
        //setting background (method setBackground() doesn't want to work for me)
        g.setColor(Color.black);
        for(int i = 0; i<active.length; i++) {
            if(active[i]==0) {
                g.drawLine(offset + i*length, offset + length, offset + i*length + length, offset + length);
            }
            else {
                g.drawLine(offset + i*length, offset, offset + i*length + length, offset);
            }
            /*
             * draw line from XY point to another XY point
             * notice that X = Y = 0 point is in left top corner
             * so higher Y values will mean "downer" points acctualy
             */
        }
    }

}

}

Если вы хотите, я могу выслать вам блок графиков для математических функций (например, sinus, power, ...)

...