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