import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JPanel; public class JHorizon extends JPanel { private int h = 0, a = 0; public JHorizon() { setMinimumSize(new Dimension(100, 100)); setPreferredSize(new Dimension(100, 100)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); double m = Math.tan(Math.toRadians(a)); int y1 = (int) (h - m * 50), y2 = (int) (h + m * 50); int[] x = new int[4], y = new int[4]; // parte inferiore verde x[0] = 0; y[0] = 50 - y1; x[1] = 100; y[1] = 50 - y2; x[2] = 100; y[2] = 100; x[3] = 0; y[3] = 100; g.setColor(Color.GREEN); g.fillPolygon(x, y, 4); // parte superiore azzurra x[0] = 0; y[0] = 50 - y1; x[1] = 100; y[1] = 50 - y2; x[2] = 100; y[2] = 0; x[3] = 0; y[3] = 0; g.setColor(Color.CYAN); g.fillPolygon(x, y, 4); // assi, gradazioni e cerchio g.setColor(Color.BLACK); g.drawLine(0, 50, 100, 50); g.drawLine(50, 0, 50, 100); for (int i = 10; i < 100; i += 10) g.drawLine(45, i, 55, i); g.drawOval(0, 0, 100, 100); g.drawString(a + "°", 1, 10); g.drawString(h + "", 82, 10); } public int getH() { return h; } public void setH(int h) { this.h = h; repaint(); } public int getA() { return a; } public void setA(int a) { this.a = a; repaint(); } }
Associare nel Main a jHorizon il gestore di evento MouseMoved:
private void jHorizonMouseMoved(java.awt.event.MouseEvent evt) { int x = evt.getX(), y = evt.getY(); jHorizon.setA(x - 50); jHorizon.setH(50 - y); }