InterfazLineasTelefonicas
package
LineasTelefonicas;
import
java.awt.BorderLayout;
import
java.awt.Color;
import
java.awt.Dimension;
import
java.awt.EventQueue;
import
java.awt.GridLayout;
import
javax.swing.JOptionPane;
import
javax.swing.JFrame;
import javax.swing.JPanel;
import
javax.swing.border.EmptyBorder;
import
javax.swing.border.LineBorder;
import
Unidades.LineasTelefonicas.Mundo.Empresa;
public
class InterfazLineasTelefonicas extends JFrame {
//private static final String
getPreferredSize = null;
private Empresa empresa;
private PanelImagen panelImagen;
private PanelTotales panelTotales;
private PanelLineasTelefonicas
panelLinea1;
private PanelLineasTelefonicas
panelLinea2;
private PanelLineasTelefonicas
panelLinea3;
private PanelExtension
panelExtension;
private JPanel contentPane;
private PanelImagen panelImagen1;
public
InterfazLineasTelefonicas() {
empresa=new Empresa();
empresa.inicializar();
getContentPane().setLayout(new
BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//this.setSize(new
Dimension(500,500));
//this.setMinimumSize(new
Dimension(500,500));
setTitle("----LINEAS
TELEFONICAS ---");
JPanel panelSuperior=new
JPanel();
panelSuperior.setLayout(new
BorderLayout());
getContentPane().add(panelSuperior,BorderLayout.NORTH);
panelImagen=new PanelImagen();
panelSuperior.add(panelImagen,BorderLayout.WEST);
panelTotales= new PanelTotales();
panelSuperior.add(panelTotales,BorderLayout.CENTER);
JPanel
panelContenedor=new JPanel();
panelContenedor.setLayout(new
GridLayout(1,3));
getContentPane().add(panelContenedor,BorderLayout.CENTER);
panelLinea1=new
PanelLineasTelefonicas(this,1);
panelContenedor.add(panelLinea1);
panelLinea2=new
PanelLineasTelefonicas(this ,2);
panelContenedor.add(panelLinea2);
panelLinea3=new
PanelLineasTelefonicas(this ,3);
panelContenedor.add(panelLinea3);
panelExtension=new
PanelExtension(this);
getContentPane().add(panelExtension,BorderLayout.SOUTH);
pack();
setResizable(false);
}
public void agregarLlamada(int
numeroLinea)
{
String
minutos=JOptionPane.showInputDialog(this,"Numero de minutos
hablados");
try{
if
(minutos!=null)
{
int
min=Integer.parseInt(minutos);
if(min<=0)
{
JOptionPane.showMessageDialog(this,"Elnumero
de minutos debe ser mayor a
cero","Error",JOptionPane.ERROR_MESSAGE);
return;
}
Object[]possibilities={"Local","Larga
distancia","Celular"};
String
tipo=(String)JOptionPane.showInputDialog(this,"Tipo de
llamada:","Tipo ",JOptionPane.QUESTION_MESSAGE,
null,possibilities,"Local");
if(tipo!=null)
{
if(numeroLinea==1)
{
if("Local".equals(tipo))
{
empresa.agregarLlamadaLocalLinea1(min);
}
else
if ("Larga distancia".equals(tipo))
{
empresa.agregarLlamadaLargaDistanciaLinea1(min);
}
else
if("Celular".equals(tipo))
{
empresa.agregarLlamadaCelularLinea1(min);
}
}
else
if(numeroLinea==2)
{
if("Local".equals(tipo))
{
empresa.agregarLlamadaLocalLinea2(min);
}
else
if("Larga distancia".equals(tipo))
{
empresa.agregarLlamadaLargaDistanciaLinea2(min);
}
else
if("Celular".equals(tipo))
{
empresa.agregarLlamadaCelularLinea2(min);
}
}
else
if(numeroLinea==3)
{
if("Local".equals(tipo))
{
empresa.agregarLlamadaLocalLinea3(min);
}
else
if("Larga distancia".equals(tipo))
{
empresa.agregarLlamadaLargaDistanciaLinea3(min);
}
else
if("Celular".equals(tipo))
{
empresa.agregarLlamadaCelularLinea3(min);
}
}
actualizar();
}
}
}
catch (NumberFormatException
e)
{
JOptionPane.showMessageDialog(this,"El
número de minutos es
inválido","Error",JOptionPane.ERROR_MESSAGE);
}
}
public void reiniciar()
{
empresa.reiniciar();
actualizar();
}
private void actualizar()
{
panelTotales.actualizar(empresa);
panelLinea1.actualizar(empresa.darLinea1());
panelLinea2.actualizar(empresa.darLinea2());
panelLinea3.actualizar(empresa.darLinea3());
}
public void reqFuncOption1()
{
String resultado=empresa.
metodo1();
JOptionPane.showMessageDialog(this,
resultado,"Respuesta",JOptionPane.INFORMATION_MESSAGE);
}
public void reqFuncOption2()
{
String
resultado=empresa. metodo2();
JOptionPane.showMessageDialog(this,
resultado,"Respuesta",JOptionPane.INFORMATION_MESSAGE);
}
public static void main
(String[]arg){
InterfazLineasTelefonicas interfaz=new InterfazLineasTelefonicas();
interfaz.setVisible(true);
}
}
PanelExtension
package
LineasTelefonicas;
import
java.awt.GridLayout;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
javax.swing.JButton;
import
javax.swing.JPanel;
import
javax.swing.border.TitledBorder;
public
class PanelExtension extends JPanel implements ActionListener {
private static final String
REINICIAR= "REINICIAR";
private static final String
OPCION_1= "OPCION_1";
private static final String
OPCION_2= "OPCION_2";
private InterfazLineasTelefonicas
principal;
private JButton btnReiniciar;
private JButton btnOpcion1;
private JButton btnOpcion2;
public PanelExtension(InterfazLineasTelefonicas
elPadre){
principal=elPadre;
setBorder(new
TitledBorder("Opciones"));
setLayout(new
GridLayout(1,3));
btnReiniciar= new
JButton("Reiniciar");
btnReiniciar.setActionCommand("REINICIAR");
btnReiniciar.addActionListener(this);
add(btnReiniciar);
btnOpcion1=new
JButton("Opción 1");
btnOpcion1.setActionCommand("OPCION_1");
btnOpcion1.addActionListener(this);
add(btnOpcion1);
btnOpcion2=new
JButton("Opción 2");
btnOpcion2.setActionCommand("OPCION_2");
btnOpcion2.addActionListener(this);
add(btnOpcion2);
}
public void
actionPerformed(ActionEvent e){
if(OPCION_1.equals(e.getActionCommand())){
principal.reqFuncOption1();
}
else if
(OPCION_2.equals(e.getActionCommand())){
principal.reqFuncOption2();
}
else if
(REINICIAR.equals(e.getActionCommand())){
principal.reiniciar();
}
}
}
PanelLineasTelefonicas
package
LineasTelefonicas;
import
java.awt.Color;
import
java.awt.Dimension;
import
java.awt.Font;
import
java.awt.GridBagConstraints;
import
java.awt.GridBagLayout;
import
java.awt.Insets;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.text.DecimalFormat;
import
java.text.NumberFormat;
import
javax.swing.ImageIcon;
import
javax.swing.JButton;
import
javax.swing.JLabel;
import
javax.swing.JPanel;
import
javax.swing.border.TitledBorder;
import
Unidades.LineasTelefonicas.Mundo.LineaTelefonica;
public
class PanelLineasTelefonicas extends
JPanel implements ActionListener{
private static final String
AGREGAR="AGREGAR";
private InterfazLineasTelefonicas
principal;
private int numeroLinea;
private JLabel etiquetaImagen;
private JLabel etiquetaCosto;
private JLabel
etiquetaNumeroLlamadas;
private JLabel etiquetaMinutos;
private JButton btnAgregar;
public
PanelLineasTelefonicas(InterfazLineasTelefonicas laPrincipal,int
elNumeroLinea){
principal = laPrincipal;
numeroLinea=
elNumeroLinea;
setBorder(new
TitledBorder("Línea #"+numeroLinea));
setLayout(new
GridBagLayout());
setPreferredSize(new
Dimension(260,220));
ImageIcon icono= new
ImageIcon(getClass().getResource("58119.jpg"));
etiquetaImagen=new
JLabel("");
etiquetaImagen.setIcon(icono);
etiquetaImagen.setBorder(new
TitledBorder(""));
etiquetaCosto=new JLabel
(formatearValor(0));
etiquetaCosto.setForeground(Color.blue.darker());
etiquetaCosto.setFont(new
Font ("calibri",Font.BOLD,18));
etiquetaNumeroLlamadas=new
JLabel ("Número llamadas: 0 ");
etiquetaMinutos= new JLabel
("Número de minutos: 0");
btnAgregar=new JButton
("Agregar llamadas");
btnAgregar.setPreferredSize(new
Dimension(150,25));
btnAgregar.setActionCommand(AGREGAR);
btnAgregar.addActionListener(this);
GridBagConstraints
posicion= new GridBagConstraints (0,0,2,2,0,0,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaImagen,posicion);
posicion= new
GridBagConstraints (2,0,4,2,0,0,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaCosto,posicion);
posicion= new
GridBagConstraints (0,2,6,2,0,0,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaNumeroLlamadas,posicion);
posicion= new
GridBagConstraints (0,4,6,2,0,0,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaMinutos,posicion);
posicion= new
GridBagConstraints (0,6,6,2,0,0,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(btnAgregar,posicion);
}
public void
actualizar(LineaTelefonica linea)
{
etiquetaCosto.setText(formatearValor(linea.darCostoLlamadas()));
etiquetaNumeroLlamadas.setText("Numero
Llamadas: "+formatearValorEntero(linea.darNumeroLlamadas()));
etiquetaMinutos.setText("Numero
de Minutos: "+formatearValorEntero(linea.darNumeroMinutos()));
}
private String formatearValor(double
valor){
DecimalFormat df
=(DecimalFormat)NumberFormat.getInstance();
df.applyPattern("$
###,###.##");
df.setMinimumFractionDigits(2);
return df.format(valor);
}
private String formatearValorEntero
(int valor){
DecimalFormat df
=(DecimalFormat)NumberFormat.getInstance();
df.applyPattern("###,###");
df.setMinimumFractionDigits(0);
return df.format(valor);
}
public void
actionPerformed(ActionEvent e){
if
(AGREGAR.equals(e.getActionCommand()))
{
principal.agregarLlamada(numeroLinea);
}
}
}
LineaTelefonica
package
Unidades.LineasTelefonicas.Mundo;
public class LineaTelefonica
{
private int numeroLlamadas;
private int numeroMinutos;
private double costoLlamadas;
public void inicializar(){
numeroLlamadas= 0;
numeroMinutos= 0;
costoLlamadas= 0;
}
public void reiniciar(){
numeroLlamadas= 0;
numeroMinutos= 0;
costoLlamadas= 0;
}
public double
darCostoLlamadas(){
return costoLlamadas;
}
public int
darNumeroLlamadas(){
return numeroLlamadas;
}
public int
darNumeroMinutos(){
return numeroMinutos;
}
public void
agregarLlamadaLocal(int minutos){
numeroLlamadas=numeroLlamadas +1;
numeroMinutos=numeroMinutos+ minutos;
costoLlamadas= costoLlamadas+ (minutos*2);
}
public void
agregarLlamadaLargaDistancia(int minutos){
numeroLlamadas=numeroLlamadas +1;
numeroMinutos=numeroMinutos+ minutos;
costoLlamadas= costoLlamadas+ (minutos*10);
}
public void
agregarLlamadaCelular(int minutos){
numeroLlamadas=numeroLlamadas +1;
numeroMinutos=numeroMinutos+ minutos;
costoLlamadas= costoLlamadas+ (minutos*15);
}
}
PanelTotales
package
LineasTelefonicas;
import
java.awt.Color;
import
java.awt.Font;
import
java.awt.GridBagConstraints;
import
java.awt.GridBagLayout;
import
java.awt.Insets;
import
java.text.DecimalFormat;
import java.text.NumberFormat;
import
javax.swing.JLabel;
import
javax.swing.JPanel;
import
javax.swing.border.TitledBorder;
import
Unidades.LineasTelefonicas.Mundo.Empresa;
public
class PanelTotales extends JPanel {
private JLabel
etiquetaNumeroLlamadas;
private JLabel etiquetaCosto;
private JLabel etiquetaMinutos;
private JLabel
etiquetaCostoPromedio;
public PanelTotales (){
setBorder( new
TitledBorder("Totales"));
setLayout(new
GridBagLayout());
etiquetaCosto= new
JLabel(formatearValor(0));
etiquetaCosto.setForeground(Color.BLUE.darker());
etiquetaCosto.setFont(new
Font("Calibri", Font.BOLD, 40));
etiquetaNumeroLlamadas=new
JLabel("Total de llamadas: 0");
etiquetaMinutos=new
JLabel("Total minutos: 0");
etiquetaCostoPromedio= new
JLabel("Costo promedio por minuto: N/A");
GridBagConstraints
posicion= new GridBagConstraints (2,2,1,15,1,15,GridBagConstraints.CENTER,
GridBagConstraints.VERTICAL, new Insets(5,5,5,5),0,0);
add
(etiquetaCosto,posicion);
posicion= new GridBagConstraints
(2,17,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.NONE, new
Insets(5,5,5,5),0,0);
add
(etiquetaNumeroLlamadas,posicion);
posicion= new
GridBagConstraints (2,18,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaMinutos,posicion);
posicion= new
GridBagConstraints (2,19,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
add
(etiquetaCostoPromedio,posicion);
}
public
void actualizar(Empresa empresa)
{
etiquetaCosto.setText(formatearValor(empresa.darTotalCostoLlamadas()));
etiquetaNumeroLlamadas.setText("Total
de minutos: "+fomtaearValorEntero(empresa.darTotalNumeroLlamadas()));
etiquetaMinutos.setText("Total
de Minutos"+fomtaearValorEntero(empresa.darTotalMinutos()));
if(!Double.isNaN(empresa.darCostoPromedioMinuto())){
etiquetaCostoPromedio.setText("Costo
promedio por minuto: "+formatearValor(empresa.darCostoPromedioMinuto()));
}
else{
etiquetaCostoPromedio.setText("
Costo promedio por minuto: N/A");
}
}
private
String formatearValor(double valor){
DecimalFormat
df=(DecimalFormat)NumberFormat.getInstance();
df.applyPattern("$
###,###.##");
df.setMinimumFractionDigits(2);
return df.format(valor);
}
private
String fomtaearValorEntero(int valor){
DecimalFormat
df=(DecimalFormat)NumberFormat.getInstance();
df.applyPattern("###,###");
df.setMinimumFractionDigits(0);
return df.format(valor);
}
}
Empresa
package
Unidades.LineasTelefonicas.Mundo;
public class Empresa {
private LineaTelefonica
linea1;
private LineaTelefonica
linea2;
private LineaTelefonica
linea3;
public void inicializar(){
linea1 =new
LineaTelefonica();
linea1.inicializar();
linea2 =new
LineaTelefonica();
linea2.inicializar();
linea3 =new
LineaTelefonica();
linea3.inicializar();
}
public LineaTelefonica
darLinea1(){
return linea1;
}
public LineaTelefonica
darLinea2(){
return linea2;
}
public LineaTelefonica
darLinea3(){
return linea3;
}
public void
agregarLlamadaLocalLinea1(int minutos)
{
linea1.agregarLlamadaLocal(minutos);
}
public void
agregarLlamadaLocalLinea2(int minutos)
{
linea2.agregarLlamadaLocal(minutos);
}
public void
agregarLlamadaLocalLinea3(int minutos)
{
linea3.agregarLlamadaLocal(minutos);
}
public void
agregarLlamadaLargaDistanciaLinea1(int minutos)
{
linea1.agregarLlamadaLargaDistancia(minutos);
}
public void
agregarLlamadaLargaDistanciaLinea2(int minutos)
{
linea2.agregarLlamadaLargaDistancia(minutos);
}
public void
agregarLlamadaLargaDistanciaLinea3(int minutos)
{
linea3.agregarLlamadaLargaDistancia(minutos);
}
public void
agregarLlamadaCelularLinea1(int minutos)
{
linea1.agregarLlamadaCelular(minutos);
}
public void
agregarLlamadaCelularLinea2(int minutos)
{
linea2.agregarLlamadaCelular(minutos);
}
public void
agregarLlamadaCelularLinea3(int minutos)
{
linea3.agregarLlamadaCelular(minutos);
}
public int
darTotalNumeroLlamadas(){
int total =linea1.darNumeroLlamadas()+linea2.darNumeroLlamadas()+linea3.darNumeroLlamadas();
return total;
}
public int
darTotalMinutos() {
int total =linea1.darNumeroMinutos()+linea2.darNumeroMinutos()+linea3.darNumeroMinutos();
return total;
}
public double
darTotalCostoLlamadas(){
double total =linea1.darCostoLlamadas()+linea2.darCostoLlamadas()+linea3.darCostoLlamadas();
return total;
}
public double
darCostoPromedioMinuto(){
double promedio=darTotalCostoLlamadas()/darTotalMinutos();
return promedio;
}
public void reiniciar() {
linea1.reiniciar();
linea2.reiniciar();
linea3.reiniciar();
}
public String
metodo1() {
return "Respuesta
1";
}
public String
metodo2() {
return "Respuesta
2";
}
}
No hay comentarios:
Publicar un comentario