
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);
}