Хотя в этом примере значения X-Y жестко закодированы, позволяет предположить, что пользователь ввел значения динамически и нажал кнопку, чтобы просмотреть результаты на экране.Как динамически центрировать графику
Было бы нецелесообразно рассчитать кадр на основе наибольшего размера, поскольку рамка будет слишком большой для монитора.
Что требуется для ввода введенных значений X-Y (независимо от того, насколько велика или мала), и чтобы изображение выглядело в центре кадра?
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Area;
import java.awt.geom.Path2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ZoomToXY extends JPanel
{
int x = 0;
public void paint(Graphics g)
{
//Can't see this.
int[] xs2 = {5308, 5306, 4143, 4143, 4120, 4119, 4118, 4117, 4116, 4114, 4112};
int[] ys2 = {4474, 5329, 5306, 5171, 5171, 5173, 5175, 5177, 5179, 5181, 5182};
BasicStroke traceStroke = new BasicStroke (1); //Line thickness
Graphics2D gc = (Graphics2D) g.create();
gc.setColor(Color.RED);
gc.drawPolyline(xs2, ys2, 11);
gc.setStroke(traceStroke);
x++;
}
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.add(new ZoomToXY());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,20, 250,250);
frame.setVisible(true);
}
}
Вы должны нарисовать, используя метод paintComponent JPanel. Вы должны найти наибольшее значение X или Y и уменьшить свои значения X и Y, чтобы они соответствовали области рисования. –