使用Paint Component绘制折线图

时间:2012-02-29 10:59:30

标签: java graph paint paintcomponent

如何使用来自线程的输出来创建折线图,线程是在52秒的过程中运行的传入和传出账单的模拟,这将在线图上显示,如下所示

我想使用paint组件而不是像JChart那样的任何第三方类。

enter image description here

1 个答案:

答案 0 :(得分:2)

假设您有一些用于绘制的JPanel对象,我会将以下内容添加到您的对象中:

public class GraphPanel extends JPanel{
    //static constants for defining the size and positioning of the graph on canvas
    //Ignore the values I chose, they were completely random :p
    private static final int X_AXIS_LENGTH = 1000;
    private static final int Y_AXIS_LENGTH = 500;

    private static final int X_AXIS_OFFEST = 50;
    private static final int Y_AXIS_OFFSET = 50;
...

这些都应该是常量值,用于定义图形在画布上的大小(轴长度)及其定位(偏移量)。

然后,您可以在paintComponent方法中引用这些值,以在画布上查找要为此更新绘制的线条的实际位置。

...
@Override
public void paintComponent(Graphics g){
    int x, y;
    int prevX, prevY;
    int maxX, maxY;
    ...
    //retrieve values from your model for the declared variables
    ...
    //calculate the coords of your line on the canvas
    int xPos = ((x / maxX) * X_AXIS_LENGTH) + X_AXIS_OFFSET;
    ...
    //do the same for y, prevX, prevY and then you can use g.drawLine
}
...

请注意,您要更改maxXmaxY,因为xy值超出了这些限制,您需要添加一些额外的代码来检查对于该更改,并使用新的限制重新绘制整个图表。