import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
public class Main extends JFrame {
public Main() {
MyCanvas thingy = new MyCanvas();
setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.add(thingy);
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(panel);
add(scroll, BorderLayout.CENTER);
SpinnerNumberModel spmodel = new SpinnerNumberModel(thingy.getThingySize(),
10.0, 2000.0, 10.0);
spmodel.addChangeListener(e->thingy.setThingySize((Double) spmodel.getNumber()));
add(new JSpinner(spmodel), BorderLayout.NORTH);
}
public static void main(String[] args) {
new Main().start();
}
private void start() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
class MyCanvas extends JPanel {
double size = 20.0;
@Override
public Dimension getPreferredSize() {
int isize = (int) this.size;
return new Dimension(isize, isize);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int[] x = { 0, 100, 100, 0, 0, 75, 75, 125, 25, 50 };
int[] y = { 0, 10, 10, 100, 25, 125, 75, 75, 510, 50 };
Graphics2D g2d = (Graphics2D) g;
AffineTransform at0 = g2d.getTransform();
g2d.scale(size / 100, size / 100);
g.drawPolyline(x, y, x.length);
g2d.setTransform(at0);
}
public void setThingySize(double size) {
this.size = size;
revalidate();
repaint();
}
public double getThingySize() {
return this.size;
}
}