如何使用来自线程的输出来创建折线图,线程是在52秒的过程中运行的传入和传出账单的模拟,这将在线图上显示,如下所示
我想使用paint组件而不是像JChart那样的任何第三方类。
答案 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
}
...
请注意,您要更改maxX
和maxY
,因为x
和y
值超出了这些限制,您需要添加一些额外的代码来检查对于该更改,并使用新的限制重新绘制整个图表。