Предполагая, что у вас есть какой-то объект 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
превышают эти пределы, вам нужно будет добавитьнекоторый дополнительный код, чтобы проверить это изменение и перерисовать весь график с новыми ограничениями.