
4 Realizar un Frame Cada uno de los sensores deberá indicar la velocidad lineal de un automóvil, la cual varia de 0 a 280 Km/h:
import javax.swing.*;
import java.awt.*;
import trabajofinal.Sensor;
import java.text.DecimalFormat.*;
public class Velometro extends JFrame{
public Velometro(){
super("SENSOR DE VELOCIDAD");
setSize(600,400);
show();
}
public void paint(Graphics g){
int r,p,y;
super.paint(g);
g.setColor(Color.BLACK);{
g.drawRect(80, 150, 30, 150);
g.drawOval(370, 150, 150, 150);
}
g.setColor(Color.BLACK);{
g.drawString("0 Km/h", 80, 320);
g.drawString("280 km/h", 80, 140);
g.drawString("Alerta", 140, 90);
}
g.setColor(Color.white);{
g.fillOval(370, 150, 150, 150);
g.fillRect(80, 150, 30, 150);
}
g.setColor(Color.BLACK);{
g.drawLine(300, 0, 300, 400);
g.drawString("SENSOR DE VELOCIDAD LINEAL",60 , 50);
g.drawString("SENSOR DE VELOCIDAD", 370, 50);
g.drawString("PASTEL DE PORCENTAJE", 370,70);
}
Sensor s = new Sensor();
s.leerVelocidad();
if (s.getVelocidad()>0 & s.getVelocidad()<= 80){
g.setColor(Color.LIGHT_GRAY);
g.fillRect(80, 300-s.getVelocidad(), 30, s.getVelocidad());
g.setColor(Color.BLACK);
g.drawString(s.getVelocidad()+" km/h", 150,220);
r=315-s.getVelocidad();
p=((s.getVelocidad()*100)/280);
g.setColor(Color.blue);
g.fillArc(370,150,150,150,225,-(320-r));
g.setColor(Color.black);
g.drawString(p+"%", 430, 220);
g.setColor(Color.GREEN);
g.fillOval(150, 100, 20, 20);//ovalao pequeño
}
if(s.getVelocidad()>80& s.getVelocidad()<=160){
g.setColor(Color.cyan);
g.fillRect(80, 150, s.getVelocidad(), -(150-s.getVelocidad()));
g.setColor(Color.BLACK);
g.drawString(s.getVelocidad()+" Km/h", 150, 220);
r=315-s.getVelocidad();
p=((s.getVelocidad()*100)/280);
g.setColor(Color.ORANGE);
g.fillArc(370,150,150,150,225,-(320-r));
g.setColor(Color.black);
g.drawString(p+"%", 430, 220);
g.setColor(Color.yellow);
g.fillOval(150, 100, 20, 20);
}
if(s.getVelocidad()>160& s.getVelocidad()<=280){
g.setColor(Color.YELLOW);
g.fillRect(80, 150, 30, 150-s.getVelocidad());
g.setColor(Color.BLACK);
g.drawString(s.getVelocidad()+" Km/h",150, 220);
r=315-s.getVelocidad();
p=((s.getVelocidad()*100)/280);
g.setColor(Color.CYAN);
g.fillArc(370,150,150,150,225,-(420-r));
g.setColor(Color.black);
g.drawString(p+"%", 430, 220);
g.setColor(Color.RED);
g.fillOval(150, 100, 20, 20);
}
}
public static void main(String args[]){
Velometro velocidad = new Velometro();
velocidad.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Bueno en si el programa esta bien esta claro y muy entendible; no se mira te recomiendo que pongas una advertencia diciendo que el valor maximo a ingresar es de 280 y si see sobre pasa de ese valor que vuelva a ingresar un valor en el rango de 0 a 280 eso te recomiendo del resto todo bien .....
ResponderEliminarhOLA jOhA en tu programa pudiste haber hecho el sensor lineal de la siguiente forma...
ResponderEliminarg.drawRect(15, 330, 280, 20);
g.drawString("280 km/h", 270, 375);
g.drawString("0 km/h", 10,375);
r=280-s.getVelocidad();
g.fillRect(15,330,280-r,20);
g.setColor(Color.black);
g.drawString(s.getVelocidad()+" km/h",280-r,325);
Asi obtendria uno de forma horizontal!
hola joha yo tambien te recomiendo poner un valor maximo y minimo de ingresar los valores, eso lo puedes hacer con un while.
ResponderEliminar