desarrollo de problemas

Anuncio
Algoritmia y Programación
Oscar Bedoya
[email protected]
http://eisc.univalle.edu.co/~oscarbed/Algoritmia/
¿Cuántos botones se necesitan?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TTT extends JFrame implements
ActionListener{
contenedor = getContentPane();
miFlow = new FlowLayout();
contenedor.setLayout(miFlow);
B1.addActionListener(this);
B2.addActionListener(this);
Container contenedor;
B3.addActionListener(this);
FlowLayout miFlow;
B4.addActionListener(this);
JLabel LGanador;
B5.addActionListener(this);
JButton B1,B2,B3,B4,B5,B6,B7,B8,B9, BR;
B6.addActionListener(this);
B7.addActionListener(this);
TTT(){
B8.addActionListener(this);
LGanador = new JLabel("GANADOR: Desconocido ");
B9.addActionListener(this);
B1 = new JButton(" ");
BR.addActionListener(this);
B2 = new JButton(" ");
contenedor.add(B1);
B3 = new JButton(" ");
contenedor.add(B2);
B4 = new JButton(" ");
contenedor.add(B3);
B5 = new JButton(" ");
contenedor.add(B4);
B6 = new JButton(" ");
contenedor.add(B5);
B7 = new JButton(" ");
contenedor.add(B6);
B8 = new JButton(" ");
contenedor.add(B7);
B9 = new JButton(" ");
contenedor.add(B8);
BR = new JButton(" Reiniciar juego ");
contenedor.add(B9);
contenedor.add(LGanador); contenedor.add(BR);}
/TTT2.java
•
Cuando necesite agrupar un conjunto de elementos
dentro de un JFrame, debe utilizar un JPanel
JPanel que
agrupa los
botones
JPanel
Encuesta.java
Elementos de una GUI:
- JLabel
- JTextField
- JButton
- Container
- FlowLayout
Elementos de una GUI:
- JLabel
- JTextField
- JButton
- Container
- FlowLayout
Cada elemento se debe
* Declarar
* Crear
Elementos de una GUI:
- JLabel
- JTextField
- JButton
- Container
- FlowLayout
- JPanel
Elementos de una GUI:
- JLabel
- JTextField
- JButton
- Container
- FlowLayout
- JPanel
¿Cómo declarar y
crear un JPanel?
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
El panel permite que se agrupen
algunos elementos de la ventana
panel1
panel1
panel2
•
Panel (JPanel)
panel1
Declarar un panel:
JPanel panel1, panel2;
Crear un panel:
panel1 = new JPanel();
panel2 = new JPanel();
panel2
Para organizar los componentes se pueden usar dos
clases:
- FlowLayout
- GridLayout
Para organizar los componentes se pueden usar dos
clases:
- FlowLayout (Container)
- GridLayout (JPanel)
GridLayout: permite organizar los elementos en una rejilla
Rejilla o GridLayout de
3 filas y 3 columnas
GridLayout: permite organizar los elementos en una rejilla
Rejilla o GridLayout de
3 filas y 3 columnas
GridLayout: permite organizar los elementos en una rejilla
¿Cuáles deben ser las
dimensiones de esta
rejilla?
GridLayout: permite organizar los elementos en una rejilla
Rejilla de 4 filas y
2 columnas
GridLayout: permite organizar los elementos en una rejilla
¿Cuáles deben ser las
dimensiones de esta
rejilla?
GridLayout: permite organizar los elementos en una rejilla
Rejilla de 1 fila y
2 columnas
GridLayout: permite organizar los elementos en una rejilla
¿Cuáles deben ser las
dimensiones de esta
rejilla?
GridLayout: permite organizar los elementos en una rejilla
Rejilla de 2 filas
y 3 columnas
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
El panel permite que se agrupen
algunos elementos de la ventana
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(3,3));
Filas y columnas de la rejilla
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(3,3));
Filas y columnas de la rejilla
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(?,?));
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(4,2));
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(?,?));
•
Panel (JPanel)
Declarar un panel:
JPanel panel1;
Crear un panel:
panel1 = new JPanel();
Establecer el GridLayout:
panel1.setLayout(new GridLayout(2,3));
Problema: Complete la declaración y creación de elementos
de la siguiente GUI
• Declarar los elementos:
• Crear los elementos:
• Declarar los elementos:
JLabel ?
JTextField ?
JButton ?
JPanel ?
Container contenedor;
FlowLayout miFlow;
• Declarar los elementos:
JLabel LGanador;
JButton B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,BR;
JPanel panel1;
Container contenedor;
FlowLayout miFlow;
• Crear los elementos:
LGanador=new JLabel(“GANADOR: Desconocido”);
B1=new JButton(“ “);
B2=new JButton(“ “);
B3=new JButton(“ “);
B4=new JButton(“ “);
B5=new JButton(“ “);
B6=new JButton(“ “);
B7=new JButton(“ “);
B8=new JButton(“ “);
B9=new JButton(“ “);
B10=new JButton(“ “);
BR=new JButton(“Reiniciar juego“);
Botón B1
Botón B2
Botón B3
Botón B4
Botón B5
Botón B6
Botón B7
Botón B8
Botón B9
¿Cómo colocar los
botones en el JPanel?
• Crear los elementos:
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
• Crear los elementos:
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
• Crear los elementos:
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
Se utiliza add() para adicionar
los elementos al panel
Botón B1
Botón B2
Botón B3
Botón B4
Botón B5
Botón B6
Botón B7
Botón B8
Botón B9
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
Se debe adicionar el
panel1 al contenedor
contenedor.add(panel1);
Se debe adicionar el
panel1 al contenedor
• Crear los elementos:
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
contenedor.add(panel1);
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
contenedor.add(panel1);
contenedor.add(LGanador);
contenedor.add(BR);
panel1 = new JPanel();
panel1.setLayout(new GridLayout(3,3));
panel1.add(B1);
panel1.add(B2);
panel1.add(B3);
panel1.add(B4);
panel1.add(B5);
panel1.add(B6);
panel1.add(B7);
panel1.add(B8);
panel1.add(B9);
contenedor.add(panel1);
contenedor.add(LGanador);
contenedor.add(BR);
*TTT.java
Problema: Complete la declaración y creación de los paneles
panel1 con rejilla de
4 filas y 2 columnas
panel2 con rejilla de
1 fila y 2 columnas
*Encuesta.java
Problema: Complete la declaración y creación de los paneles
LNombre
LCodigo
LSexo
LCarrera
BIngresar
TFNombre
TFCodigo
TFSexo
TFCarrera
BPregunta1
TFNombre
TFCodigo
TFSexo
TFCarrera
LNombre
LCodigo
LSexo
LCarrera
BPregunta1
BIngresar
panel1 = new JPanel();
panel2 = new JPanel();
panel1.setLayout(new GridLayout(?,?));
panel2.setLayout(new GridLayout(?,?));
panel1.add(?);
panel2.add(?);
...
...
Encuesta.java
Problema: presente el oyente de tal forma que se calculen
3 datos: el total a pagar (DVD a $23000 y Blu-ray a
$65000), el IVA y la ganancia neta (total-IVA)
JTextField (TFDVD)
JTextField (TFBluray)
JButton (BCalcular)
JTextField (TFValor)
JTextField (TFIVA)
JTextField (TFGanancia)
VentaPeliculas.java
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
}
}
JButton (BCalcular)
DVD
$23000
Blu-ray
$65000
JTextField (TFDVD)
JTextField (TFBluray)
JTextField (TFValor)
JTextField (TFIVA)
JTextField (TFGanancia)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
int dvd, bluray, valor;
double iva, ganancia;
dvd=Integer.parseInt(TFDVD.getText());
bluray=Integer.parseInt(TFBluray.getText());
valor = dvd*23000 + bluray*65000;
iva = valor * 0.16;
ganacia = valor – iva;
TFValor.setText(String.valueOf(valor));
TFIVA.setText(String.valueOf(iva));
TFGanancia.setText(String.valueOf(ganancia));
}
}
Operaciones matemáticas:
double a,b,c,d,e;
a = Math.sin(45);
b = Math.cos(90);
c = Math.tan(37);
d = Math.pow(3,5);
e = Math.sqrt(5);
Problema: presente el oyente de tal forma que se puedan
calcular 3 valores: sin(x), cos(x) y raiz(x). El valor se debe
mostrar en el campo de texto TFResultado
JTextField (TFx)
JTextField (TFResultado)
ProgramaMath.java
public void actionPerformed(ActionEvent e){
if (e.getSource()==BSin){
}
if (e.getSource()==BCos){
}
if (e.getSource()==BRaiz){
}
}
JTextField (TFx)
JTextField (TFResultado)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BSin){
}
}
JTextField (TFx)
JTextField (TFResultado)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BSin){
int x;
double sen;
x=Integer.parseInt(TFx.getText());
sen = Math.sin(x);
TFResultado.setText(String.valueOf(sen));
}
}
JTextField (TFx)
JTextField (TFResultado)
Problema: presente el oyente de tal forma que se pueda
calcular la distancia euclidiana entre dos puntos (x1,y1) y
(x2,y2), definida como d ( x2 x1 ) 2 ( y2 y1 ) 2
JTextField (TFx1)
JTextField (TFy1)
JTextField (TFx2)
JTextField (TFy2)
JButton (BDistancia)
JTextField (TFResultado)
Distancia.java
public void actionPerformed(ActionEvent e){
if (e.getSource()==BDistancia){
}
}
JTextField (TFx1)
JTextField (TFy1)
JTextField (TFx2)
JTextField (TFy2)
JButton (BDistancia)
JTextField (TFResultado)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BDistancia){
int x1,y1,x2,y2;
double d;
x1 = Integer.parseInt(TFx1.getText());
y1 = Integer.parseInt(TFy1.getText());
x2 = Integer.parseInt(TFx2.getText());
y2 = Integer.parseInt(TFy2.getText());
d = Math.sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) );
TFResultado.setText(String.valueOf(d));
}
}
Problema: presente el oyente de tal forma que se pueda
hacer la traducción de 5 palabras de español a inglés
JTextField (TFEspañol)
JButton (BTraducir)
JTextField (TFTraduccion)
Traductor.java
public void actionPerformed(ActionEvent e){
if (e.getSource()==BTraducir){
}
}
JTextField (TFEspañol)
JButton (BTraducir)
JTextField (TFTraduccion)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BTraducir){
String palabra, traduccion;
palabra = TFEspañol.getText();
if (palabra.equals(“Raton”)){
traduccion = “Mouse”;
}
if (palabra.equals(“Profesor”)){
traduccion = “Teacher”;
}
TFTraduccion.setText(traduccion);
}
}
Problema: presente el oyente de tal forma que se calcule
el valor de la llamada
JTextField (TFOperador)
JTextField (TFDuracion)
JButton (BCalcular)
JTextField (TFValor)
Minutos.java
•
El valor de la llamada se calcula de acuerdo al operador
teniendo en cuenta los valores que se muestran en la
siguiente tabla:
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
}
}
JTextField (TFOperador)
JTextField (TFDuracion)
JButton (BCalcular)
JTextField (TFValor)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
String operador;
int duracion, valor;
operador=TFOperador.getText();
duracion=Integer.parseInt(TFDuracion.getText());
if (operador.equals(“Tigo”)){
valor = duracion*150;
}...
TFValor.setText(String.valueOf(valor));
}
}
Problema: presente el oyente de tal forma que se calculen
2 datos: el total a pagar y el valor correspondiente al pago
del seguro
JTextField (TFEdad)
JTextField (TFSexo)
JTextField (TFMeses)
JButton (BCalcular)
JTextField (TFValor)
JTextField (TFSeguro)
Gimnasio.java
•
El valor de la mensualidad se calcula usando la siguiente
tabla
•
El pago del seguro es el 8% del total a pagar
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
}
}
JTextField (TFEdad)
JTextField (TFSexo)
JTextField (TFMeses)
JButton (BCalcular)
JTextField (TFValor)
JTextField (TFSeguro)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
int edad, mensualidad, meses;
String sexo;
double seguro;
edad=Integer.parseInt(TFEdad.getText());
sexo=TFSexo.getText();
meses=Integer.parseInt(TFMeses.getText());
if (edad<18 && sexo.equals(“Masculino”)){
mensualidad = meses*32000;
seguro = mensualidad*0.08;
}...
TFValor.setText(String.valueOf(mensualidad));
TFSeguro.setText(String.valueOf(seguro));
}
}
Problema: presente el oyente de tal forma que se calculen
2 datos: la categoría y el valor a pagar
JTextField (TFEdad)
JTextField (TFMeses)
JButton (BCalcular)
JTextField (TFCategoria
JTextField (TFValor)
Tenis.java
•
La categoría y el valor del mes dependen de la edad y se
calculan usando la siguiente tabla
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
}
}
JTextField (TFEdad)
JTextField (TFMeses)
JButton (BCalcular)
JTextField (TFCategoria
JTextField (TFValor)
public void actionPerformed(ActionEvent e){
if (e.getSource()==BCalcular){
int edad, meses, valor;
String categoria;
edad=Integer.parseInt(TFEdad.getText());
meses=Integer.parseInt(TFMeses.getText());
if (edad<12){
categoria = “ Infantil “;
valor = meses * 43000;
}...
TFCategoria.setText(categoria);
TFValor.setText(String.valueOf(valor));
}
}
Actividad
Fecha
Entrega del proyecto
Viernes 15 de Junio
Sustentación
Hasta el Vienes 22 de Junio
(Martes y Jueves de 8:00 a 12:00 y de
2:00 a 4:30), Viernes de 8:00 a 11:30
Laboratorio 5
Viernes 22 de Junio
Parcial2
Lunes 25 de Junio
Opcional2
Sábado 30 de Junio
Descargar