Beruflich Dokumente
Kultur Dokumente
Actividad
Ahora que ya sabemos que debe hacer cada parte pongamos un ejemplo de algn
programa que nos hayan pedido.
Digamos que nos encargan realizar un programa que convierta una cantidad a
pesos(MXN) y a Dlares(USD)
Realizamos un anlisis del problema y ya sabemos como obtener el resultado.
Sabemos que un dlar vale 13,943 pesos y que un peso vale 0.072 dlares.
Entonces las operaciones para realizar la conversin serian:
?
moneda * cantidad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package mvc;
public class Modelo {
private Double moneda;
private Double cantidad;
private Double resultado;
public void setMoneda(Double moneda) {
this.moneda = moneda;
}
public void setCantidad(Double cantidad) {
this.cantidad = cantidad;
}
public Double getResultado() {
return resultado;
}
public void convetirDolarAPeso() {
resultado = cantidad * moneda;
}
public void convertirPesoADolar() {
resultado = cantidad * moneda;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package mvc;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Vista extends JFrame{
public JButton pesos, dolares;
private JPanel panelB, panelR;
public JLabel lResultado;
public JTextField campoTexto;
public Vista() {
getContentPane().setLayout(new BorderLayout());
panelB = new JPanel();
panelB.setLayout(new FlowLayout());
panelR = new JPanel();
panelR.setLayout(new FlowLayout());
pesos = new JButton("Convertir a Pesos");
dolares = new JButton("Convertir a Dolares");
lResultado = new JLabel("Resultado:");
campoTexto = new JTextField(20);
panelB.add(pesos);
panelB.add(dolares);
36
37
38
39
40
41
42
panelR.add(lResultado);
add(campoTexto, BorderLayout.NORTH);
add(panelB, BorderLayout.SOUTH);
add(panelR, BorderLayout.CENTER);
}
}
La clase vista se encarga de crear los componentes Swing que harn la GUI y no
explico mas de UI porque eso es tema aparte =P
Basta con saber que hereda el componente JFrame, que contiene dos paneles, dos
botones, un label y un textfield.
La clase Controlador:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package mvc;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
public class Controlador implements ActionListener {
private Modelo modelo;
private Vista vista;
private Double cantidad;
public Controlador(Modelo modelo, Vista vista) {
this.modelo = modelo;
this.vista = vista;
this.vista.pesos.addActionListener(this);
this.vista.dolares.addActionListener(this);
}
public void iniciarVista() {
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
vista.setTitle("Conversor");
vista.pack();
vista.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
vista.setLocationRelativeTo(null);
vista.setVisible(true);
}
public void actionPerformed(ActionEvent evento) {
if(vista.pesos == evento.getSource()) {
if(!"".equals(vista.campoTexto.getText())) {
try{
cantidad = Double.parseDouble(vista.campoTexto.getText());
modelo.setCantidad(cantidad);
modelo.setMoneda(13.943);
modelo.convetirDolarAPeso();
vista.lResultado.setText(modelo.getResultado().toString());
}catch(NumberFormatException e) {
vista.lResultado.setText("Introduzca una cantidad valida...");
}
}
}
else if(vista.dolares == evento.getSource()) {
if(!"".equals(vista.campoTexto.getText())) {
try{
cantidad = Double.parseDouble(vista.campoTexto.getText());
modelo.setCantidad(cantidad);
modelo.setMoneda(0.072);
modelo.convertirPesoADolar();
vista.lResultado.setText(modelo.getResultado().toString());
}catch(NumberFormatException e) {
vista.lResultado.setText("Introduzca una cantidad valida...");
}
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ejecutarConversor;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import mvc.Controlador;
import mvc.Modelo;
import mvc.Vista;
public class PruebaConversor {
public static void main(String arf[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassNa
me());
}
catch (UnsupportedLookAndFeelException e) {
}
catch (ClassNotFoundException e) {
}
catch (InstantiationException e) {
}
catch (IllegalAccessException e) {
}
Modelo modelo = new Modelo();
Vista vista = new Vista();
Controlador controlador = new Controlador(modelo, vista);
controlador.iniciarVista();
}
}
Esta clase crea tres objetos que son, del tipo Modelo, del tipo Vista y del tipo
Controlador. A este ultimo le pasamos como parmetro los otros dos. Por ultimo,
por medio del objeto controlador mandamos mostrar la ventana. El bloque try-catch
es solo para la skin o look and feel de la aplicacin.