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