JGuida

JGuidaRealizzare il pannello grafico JGuida di larghezza 201px ed altezza 101px rappresentato in figura a destra.
La posizione orizzontale del mouse serve a fornire il valore della sterzata dell’NXT (da -100 a +100), la posizione verticale la velocità del motore (da 0 a 100, dal basso verso l’alto)

Soluzione

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JComponent;

public class JGuida extends JComponent {

	private int speed, steer;

	private class MouseMotionListener extends MouseMotionAdapter {
		@Override
		public void mouseMoved(MouseEvent e) {
			steer = e.getX() - 100;
			speed = 100 - e.getY();
		}
	}

	public JGuida() {
		setPreferredSize(new Dimension(201, 101));
		speed = 0;
		steer = 0;
		addMouseMotionListener(new MouseMotionListener());
	}

	@Override
	public void paintComponent(Graphics g) {
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, 201, 101);
		g.setColor(Color.GRAY);
		for (int i = 10; i <= 90; i += 10)
			g.drawLine(0, i, 200, i);
		for (int i = 10; i <= 190; i += 10)
			g.drawLine(i, 0, i, 100);
		g.setColor(Color.BLACK);
		g.drawRect(0, 0, 200, 100);
		g.drawLine(100, 0, 100, 100);
		g.setFont(new Font("Arial", Font.BOLD, 18));
		g.setColor(Color.BLUE);
		g.drawString("Sinistra", 20, 95);
		g.setColor(Color.RED);
		g.drawString("Destra", 120, 95);
		g.setColor(Color.ORANGE);
		g.drawString("Motore", 70, 25);
	}

	public int getSpeed() {
		return speed;
	}

	public int getSteer() {
		return steer;
	}

}