import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import org.nfunk.jep.*; import org.nfunk.jep.type.*; public class Ecuacion extends JApplet { private JEP miEvaluador; double vt; double vw; double va; double vb; boolean errorEnExpresion; //si hay error de sintaxis en la funcion boolean errorEnNumero ; //si hay error de sintaxis en el valor x JTextField Tfun; //leer funcion JTextField Tvalort; //leer valor x para evaluar JTextField Tvalorw; JTextField Tvalora; JTextField Tvalorb; JButton BtnEvaluar; JLabel Mensaje; JLabel Mensaje2; JLabel Mensaje3; JLabel Mensaje4; JLabel Mensaje5; JLabel Mensaje6; Scrollbar slider; int sliderValue; Graphics g; public void init() { Container content = getContentPane(); setSize(400,200); Tfun = new JTextField("T*0.3162*W*(1/(sqrt(A)-sqrt(B)))",27); Tvalort = new JTextField("4",3); slider = new Scrollbar(Scrollbar.VERTICAL, 0, 1, 0, 100); Tvalorw = new JTextField("4",3); Tvalora = new JTextField("5",3); Tvalorb = new JTextField("4",3); BtnEvaluar = new JButton("Evaluar"); Mensaje = new JLabel(""); //para imprimir resultado de evaluacion Mensaje2 = new JLabel("Granulometria Out "); Mensaje3 = new JLabel("Potencia "); Mensaje4 = new JLabel("Velocidad "); Mensaje5 = new JLabel("Indice de Bond "); Mensaje6 = new JLabel("Granulometria In "); content.setLayout(new FlowLayout()); content.add(Mensaje3); content.add(Tfun); content.add(Mensaje4); content.add(Tvalort); //content.add(slider); content.add(Mensaje5); content.add(Tvalorw); content.add(Mensaje6); content.add(Tvalora); content.add(Mensaje2); content.add(Tvalorb); //content.add(Tvalorz); content.add(BtnEvaluar); content.add(Mensaje); //Manejo de eventos ManejadorDeEvento ManejadorDevt = new ManejadorDeEvento(); Tfun.addActionListener(ManejadorDevt); Tvalort.addActionListener(ManejadorDevt); Tvalorw.addActionListener(ManejadorDevt); Tvalora.addActionListener(ManejadorDevt); Tvalorb.addActionListener(ManejadorDevt); BtnEvaluar.addActionListener(ManejadorDevt); //slider.addAdjustmentListener(ManejadorDevt); //parser JEP miEvaluador = new JEP(); miEvaluador.addStandardFunctions(); //agrega las funciones comunes miEvaluador.addStandardConstants(); miEvaluador.addComplex(); miEvaluador.addVariable("T", 0); miEvaluador.addVariable("W", 0); miEvaluador.addVariable("A", 0); miEvaluador.addVariable("B", 0); miEvaluador.setImplicitMul(true); //permite 2x en vez de 2*x } private class ManejadorDeEvento implements ActionListener { public void actionPerformed (ActionEvent evt) { Object source = evt.getSource (); // si se presiona el boton o se da 'enter' en algun campo de texto if( source == BtnEvaluar || source == Tfun || source == Tvalort || source == Tvalorw) { LeerImprimir(); } } }// void LeerImprimir() { try { Double dt = new Double( Tvalort.getText() ); //leer el numero Double dw = new Double( Tvalorw.getText() ); Double da = new Double( Tvalora.getText() ); Double db = new Double( Tvalorb.getText() ); //Double dy = new Double( slider.getValue() ); vt = dt.doubleValue(); vw = dw.doubleValue(); va = da.doubleValue(); vb = db.doubleValue(); errorEnNumero=false; Tvalort.setForeground(Color.black); Tvalorw.setForeground(Color.black); Tvalora.setForeground(Color.black); Tvalorb.setForeground(Color.black); //slider.setForeground(Color.black); }catch(NumberFormatException e){ errorEnNumero=true; //numero incorrecto Tvalort.setForeground(Color.red); } vt=evaluar(miEvaluador,Tfun.getText(),vt,vw,va,vb); if(!errorEnExpresion && !errorEnNumero) { Mensaje.setText("Potencia KW "+vt); // Mensaje2.setText("slider"+vt); }else Mensaje.setText("Hay un error."); }// double evaluar(JEP Miparser,String fun, double valort, double valorw, double valora, double valorb) { Miparser.parseExpression(fun); Miparser.addVariable("T", valort); Miparser.addVariable("W", valorw); Miparser.addVariable("A", valora); Miparser.addVariable("B", valorb); errorEnExpresion = Miparser.hasError(); //hay error? return Miparser.getValue(); }// }