package conversion; import java.awt.*; import java.awt.event.*; import java.applet.*; public class ConversionApplet extends Applet { Panel Panel2 = new Panel(); BorderLayout borderLayout1 = new BorderLayout(); GridBagLayout gbl1 = new GridBagLayout(); GridBagConstraints gbc1=new GridBagConstraints(); Label labelControl1 = new Label(); TextField tIzquierda = new TextField(); TextField tDerecha = new TextField(); Checkbox chkIzq[]=new Checkbox[4]; Checkbox chkDcha[]=new Checkbox[5]; CheckboxGroup chkGrupoIzq=new CheckboxGroup(); CheckboxGroup chkGrupoDcha=new CheckboxGroup(); Button btnIzquierda = new Button(); Button btnDerecha = new Button(); //factores de conversión /* 1 cal=4.186 J 1 atml=101.3 J 1 atm=1.013e5 Pa 1 l=0.0001 m3 ºC+ 273 ºK */ static final double factorIzqDcha[]={0.239, 9.872e-3, 9.872e-6, 1000, -273}; static final double factorDchaIzq[]={4.186, 101.3, 1.013e5, 0.001, 273}; //Construct the applet public ConversionApplet() { } //Initialize the applet public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { int ancho = Integer.parseInt(this.getParameter("WIDTH")); int alto = Integer.parseInt(this.getParameter("HEIGHT")); this.setSize(new Dimension(ancho, alto)); Panel2.setBackground(Color.lightGray); this.setLayout(borderLayout1); //botones de radio de la izquierda for(int i=0; i<4; i++){ chkIzq[i]=new Checkbox(); } chkIzq[0].setLabel("Energía (J)"); chkIzq[1].setLabel("Presión (Pa)"); chkIzq[2].setLabel("Volumen (m3)"); chkIzq[3].setLabel("Temperatura (ºK)"); ListenerIzq listenerIzq=new ListenerIzq(); for(int i=0; i<4; i++){ chkIzq[i].setCheckboxGroup(chkGrupoIzq); chkIzq[i].addItemListener(listenerIzq); } chkGrupoIzq.setSelectedCheckbox(chkIzq[0]); //botones de radio de la derecha for(int i=0; i<5; i++){ chkDcha[i]=new Checkbox(); } chkDcha[0].setLabel("Energía (cal)"); chkDcha[1].setLabel("Energía (atm l)"); chkDcha[2].setLabel("Presión (atm)"); chkDcha[3].setLabel("Volumen (l)"); chkDcha[4].setLabel("Temperatura (ºC)"); ListenerDcha listenerDcha=new ListenerDcha(); for(int i=0; i<5; i++){ chkDcha[i].setCheckboxGroup(chkGrupoDcha); chkDcha[i].addItemListener(listenerDcha); } chkGrupoDcha.setSelectedCheckbox(chkDcha[1]); labelControl1.setAlignment(Label.CENTER); labelControl1.setFont(new Font("Dialog", 1, 14)); labelControl1.setText("Conversión de unidades"); btnIzquierda.setFont(new Font("Dialog", 1, 16)); btnIzquierda.setLabel(">>>>"); btnIzquierda.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { btnIzquierda_actionPerformed(e); } }); btnDerecha.setFont(new Font("Dialog", 1, 16)); btnDerecha.setLabel("<<<<"); btnDerecha.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { btnDerecha_actionPerformed(e); } }); tIzquierda.setColumns(14); tIzquierda.setText("0.0"); tDerecha.setColumns(14); tDerecha.setText("0.0"); ValidaDouble valDouble=new ValidaDouble(); tIzquierda.addFocusListener(valDouble); tDerecha.addFocusListener(valDouble); this.add(Panel2, BorderLayout.CENTER); //Panel2 Panel2.setLayout(gbl1); gbc1.anchor=GridBagConstraints.CENTER; gbc1.insets=new Insets(5,0,10,0); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(labelControl1, gbc1); gbc1.anchor=GridBagConstraints.CENTER; gbc1.insets=new Insets(0,0,5,0); gbc1.gridwidth=1; Panel2.add(tIzquierda, gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(tDerecha, gbc1); gbc1.anchor=GridBagConstraints.WEST; gbc1.insets=new Insets(0,5,0,5); gbc1.gridwidth=1; Panel2.add(chkIzq[0], gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(chkDcha[0], gbc1); gbc1.gridx=1; gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(chkDcha[1], gbc1); gbc1.gridwidth=1; gbc1.gridx=GridBagConstraints.RELATIVE; //ojo valor por defecto Panel2.add(chkIzq[1], gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(chkDcha[2], gbc1); gbc1.gridwidth=1; Panel2.add(chkIzq[2], gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(chkDcha[3], gbc1); gbc1.gridwidth=1; Panel2.add(chkIzq[3], gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(chkDcha[4], gbc1); gbc1.anchor=GridBagConstraints.CENTER; gbc1.gridwidth=1; gbc1.insets=new Insets(10,0,5,0); Panel2.add(btnIzquierda, gbc1); gbc1.gridwidth=GridBagConstraints.REMAINDER; Panel2.add(btnDerecha, gbc1); } //convertir de izquierda a derecha void btnIzquierda_actionPerformed(ActionEvent e) { double izq=Double.valueOf(tIzquierda.getText()).doubleValue(); Checkbox seleccionado=chkGrupoDcha.getSelectedCheckbox(); int i=0; for(i=0; i<5; i++){ if (seleccionado.equals(chkDcha[i])){ break; } } double dcha; if(i==4){ dcha=izq+factorIzqDcha[i]; }else{ dcha=izq*factorIzqDcha[i]; } tDerecha.setText(String.valueOf(dcha)); } //convertir de derecha a izquierda void btnDerecha_actionPerformed(ActionEvent e) { double dcha=Double.valueOf(tDerecha.getText()).doubleValue(); Checkbox seleccionado=chkGrupoDcha.getSelectedCheckbox(); int i=0; for(i=0; i<5; i++){ if (seleccionado.equals(chkDcha[i])){ break; } } double izq; if(i==4){ izq=dcha+factorDchaIzq[i]; }else{ izq=dcha*factorDchaIzq[i]; } tIzquierda.setText(String.valueOf(izq)); } //cuando se selecciona un botón de radio de la izquierda public class ListenerIzq implements ItemListener{ public void itemStateChanged(ItemEvent ev){ Checkbox seleccionado=(Checkbox)ev.getSource(); int i=0; for(i=0; i<4; i++){ if (seleccionado.equals(chkIzq[i])){ break; } } chkDcha[i+1].setState(true); } } //cuando se selecciona un botón de radio de la derecha public class ListenerDcha implements ItemListener{ public void itemStateChanged(ItemEvent ev){ Checkbox seleccionado=(Checkbox)ev.getSource(); int i=0; for(i=0; i<5; i++){ if (seleccionado.equals(chkDcha[i])){ break; } } if(i==0){ chkIzq[0].setState(true); }else{ chkIzq[i-1].setState(true); } } } } class ValidaDouble extends FocusAdapter{ public void focusLost(FocusEvent ev){ TextField tEntrada=(TextField)(ev.getSource()); try{ Double.valueOf(tEntrada.getText()).doubleValue(); }catch(NumberFormatException e){ tEntrada.requestFocus(); tEntrada.selectAll(); } } }