Necesito una idea sobre como hacer un ejercicio

Iniciado por jos3, 4 Diciembre 2008, 00:23 AM

0 Miembros y 3 Visitantes están viendo este tema.

juancho77

Si te pidio arrays, debes asumir que la lista de comidas es fija. Si usarias un Vector, la caracteristica de este es que es redimensionable en ejecucion. Entonces, si se quisiera ofrecer un nuevo plato, el sistema podria agregarlo facilmente al menu. Se entiende?
Pero como te piden arrays, solo crea un array de las comidas que quieras. Cada comida es un objeto (va, deberia ser).
Podrias tambien hacer una clase CENA que tenga como atributos: una comida, un postre, una bebida, componentes auxiliares (cubiertos, por ejemplo).

jos3

#11
hola nesecito ayuda a que me expliquen para que sirven ciertas cosas con respecto a este menu el cual me dio el profesor para que me basara en el para hacer el mio!!! pero no se para que sirven ciertas cosas aca les dejo el ejercicio que me dio el profesor
en si los que no entiendo es que hacen los que dice gridbaglayout y GridBagConstraints en el ejercicio!! saludos y gracias
Código (java) [Seleccionar]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class MenuRest extends JApplet implements ActionListener {

public Object arreglo[][] = new Object[10][2];
public JComboBox combo = new JComboBox();
public JTextField precio = new JTextField(), TotalGeneral = new JTextField();
public JButton ins = new JButton( "Agregar" ), clean = new JButton( "Nuevo" );
public JTextArea info1 = new JTextArea();
public JTextArea info2 = new JTextArea();
public double acumulado = 0, precioActual = 1250, total = 0;;

// Imagenes
public Icon icono = new ImageIcon("Logo.gif");

// Definicion de Colores
public Color gris = new Color(213,213,213);
public Color azul = new Color( 70, 97,141);

public DecimalFormat dosCifras = new DecimalFormat("#,###,##0.00");

// Constructor de la clase
public MenuRest() {

LlenarArreglo(); // coloca los datos de comidas dentro del arreglo

// Crea la interfaz
JLabel Logo = new JLabel(icono);
JLabel label1 = new JLabel( "      Producto:" );
JLabel label2 = new JLabel( "      Precio:" );
JLabel label3 = new JLabel( " Producto" );
JLabel label4 = new JLabel( " Precio" );
JLabel label5 = new JLabel( "Total:", JLabel.RIGHT );
info1.setPreferredSize(new Dimension(250,200) );
info2.setPreferredSize(new Dimension(250,200) );
info1.setEnabled( false );
info2.setEnabled( false );
info1.setDisabledTextColor( azul );
info2.setDisabledTextColor( azul );
label3.setOpaque( true );
label4.setOpaque( true );
label3.setBackground(azul);
label4.setBackground(azul);
label3.setForeground( gris );
label4.setForeground( gris );
ins.setPreferredSize( new Dimension(90,25) );
combo.setPreferredSize(new Dimension(250,25) );
precio.setPreferredSize( new Dimension(150,25) );
TotalGeneral.setPreferredSize( new Dimension(150,25) );
precio.setEditable( false );
TotalGeneral.setEditable( false );

// Eventos
combo.addActionListener( this );
ins.addActionListener( this );
clean.addActionListener( this );

JPanel Panel1 = new JPanel( new GridBagLayout() );
Panel1.setOpaque( false );
Panel1.add( label1, grid(0, 0, 1, 1) );
Panel1.add( label2, grid(0, 1, 1, 1) );
Panel1.add( combo,  grid(1, 0, 1, 2) );
Panel1.add( precio, grid(1, 1, 1, 1) );
Panel1.add( ins,    grid(2, 1, 1, 1) );
Panel1.add( new JLabel( new ImageIcon("Barra.jpg") ), grid(0, 2, 1, 3) );

JPanel Panel2 = new JPanel( new GridBagLayout() );
Panel2.setOpaque( false );
Panel2.add( label3, grid( 0, 0, 1, 1, 0 ) );
Panel2.add( label4, grid( 1, 0, 1, 1, 0 ) );
Panel2.add( info1,  grid( 0, 1, 1, 1, 0 ) );
Panel2.add( info2,  grid( 1, 1, 1, 1, 0 ) );

JPanel Panel3 = new JPanel( new FlowLayout() );
Panel3.setOpaque( false );
Panel3.setPreferredSize( new Dimension(500,35) );
Panel3.add( clean );
Panel3.add( label5 );
Panel3.add( TotalGeneral );

JPanel principal = new JPanel( new GridBagLayout() );
principal.setBackground(gris);
principal.add( Logo, grid(0, 0, 1, 1) );
principal.add( Panel1, grid( 0, 1, 1, 1 ) );
principal.add( Panel2, grid( 0, 2, 1, 1 ) );
principal.add( Panel3, grid( 0, 3, 1, 1 ) );
this.add( principal );
}

public void actionPerformed( ActionEvent objeto ) {
if ( objeto.getSource() == combo ) {
String precioElegido = "";
// Localiza producto
for( int i = 0; i < 10; i++ ) {
if(arreglo[i][0] == combo.getSelectedItem() ) {
precioElegido = arreglo[i][1].toString();
i = 10;
}
}
precioActual = Double.parseDouble( precioElegido );
precio.setText( dosCifras.format( precioActual ) );
}

if ( objeto.getSource() == ins ) {
String contenido1 = info1.getText();
if( !contenido1.isEmpty() )
contenido1 += "\n";

contenido1 += combo.getSelectedItem();
info1.setText( contenido1 );

contenido1 = info2.getText();
if( !contenido1.isEmpty() )
contenido1 += "\n";

contenido1 += precio.getText();
info2.setText( contenido1 );

total += precioActual;
TotalGeneral.setText( dosCifras.format(total) );
}

if ( objeto.getSource() == clean ) {
info1.setText("");
info2.setText("");
TotalGeneral.setText("0.00");
total = 0;
}
}

private GridBagConstraints grid( int x, int y, int alto, int ancho) {
GridBagConstraints orden = new GridBagConstraints();
orden.gridheight    = alto; orden.gridwidth     = ancho;
orden.gridx         = x;    orden.gridy         = y;
orden.insets.top    = 5;    orden.insets.bottom = 5;
orden.insets.left   = 5;    orden.insets.right  = 5;
orden.anchor = orden.WEST;
return orden;
}

private GridBagConstraints grid( int x, int y, int alto, int ancho, int ins ) {
GridBagConstraints orden = new GridBagConstraints();
orden.gridheight    = alto; orden.gridwidth     = ancho;
orden.gridx         = x;    orden.gridy         = y;
orden.insets.top    = ins;    orden.insets.bottom = ins;
orden.insets.left   = ins;    orden.insets.right  = ins;
orden.fill = orden.BOTH;
return orden;
}

private void LlenarArreglo() {

arreglo[0][0] = (String) "Hamburguesa"; arreglo[0][1] = (double) 1250;
arreglo[1][0] = (String) "Hot Dog"; arreglo[1][1] = (double) 950;
arreglo[2][0] = (String) "Papas a la Francesa"; arreglo[2][1] = (double) 1500;
arreglo[3][0] = (String) "Porcion de Arroz"; arreglo[3][1] = (double) 500;
arreglo[4][0] = (String) "Porcion de Frijoles"; arreglo[4][1] = (double) 500;
arreglo[5][0] = (String) "Carne"; arreglo[5][1] = (double) 500;
arreglo[6][0] = (String) "Pollo"; arreglo[6][1] = (double) 450;
arreglo[7][0] = (String) "Pescado"; arreglo[7][1] = (double) 625;
arreglo[8][0] = (String) "Refresco Gaseoso"; arreglo[8][1] = (double) 230;
arreglo[9][0] = (String) "Refresco Natural"; arreglo[9][1] = (double) 200;
combo.addItem( (String) arreglo[0][0] );
combo.addItem( (String) arreglo[1][0] );
combo.addItem( (String) arreglo[2][0] );
combo.addItem( (String) arreglo[3][0] );
combo.addItem( (String) arreglo[4][0] );
combo.addItem( (String) arreglo[5][0] );
combo.addItem( (String) arreglo[6][0] );
combo.addItem( (String) arreglo[7][0] );
combo.addItem( (String) arreglo[8][0] );
combo.addItem( (String) arreglo[9][0] );
precio.setText( dosCifras.format(arreglo[0][1]) );
}
}

juancho77

GridBagLayout es un Layout para disponer elementos en un Panel, Container, etc. Otros layouts mas comunes son FlowLayout, GridLayout, etc...
La ventaje del GBL es que te permite disponer los elementos CASI como vos quieras (es como el gridlayout pero mucho mas flexible).
La desventaja es que es mas dificil de usar.

GridBagConstraints o algo asi, es una caractertistica del GBL. No se bien que hace, pero creo que maneja como se disponen los elementos y a que distancia, etc.

Deberias buscar mas en el JAVADOC.

jos3

Cita de: juancho77 en 13 Diciembre 2008, 05:17 AM
GridBagLayout es un Layout para disponer elementos en un Panel, Container, etc. Otros layouts mas comunes son FlowLayout, GridLayout, etc...
La ventaje del GBL es que te permite disponer los elementos CASI como vos quieras (es como el gridlayout pero mucho mas flexible).
La desventaja es que es mas dificil de usar.

GridBagConstraints o algo asi, es una caractertistica del GBL. No se bien que hace, pero creo que maneja como se disponen los elementos y a que distancia, etc.

Deberias buscar mas en el JAVADOC.
oyen juancho77 aca te dejo una explicacion que me dio un amigo sobre para que es es el gridbaglayout y el gridbagconstrain
CitarEl Diseñador llamado GridBagLayout() hace que el contenedor (cualquiera que sea, incluyendo el JApplet) se administre en forma de una cuadrícula en donde sólo se tenga que determinar en qué coordenada yx de esa cuadrícula se coloca el componente y cuántas celdas ocupará en alto y ancho.

De tal forma que cada componente debe ser configurado al momento de agregarlo al contenedor, para configurar un componente se debe especificar por medio del constructor del GridBagLayout() las coordenadas ya mencionadas; este constructor se llama GridBagConstraints().

Sería muy tedioso tener que configurar todas estas coordenadas individualmente para cada componente de la interfaz, sin mencionar la cantidad de líneas de código que involucraría; por esta razón es que creé un método llamado grid(), que configura para cada componente sus coordenadas y una vez configuradas, devuelve al flujo del sistema el constructor del GridBagLayout() para que el componente sea colocado correctamente sobre el contenedor.

Como puedes ver, el método requiere de 4 parámetros (hay una sobreescritura del mismo método en el programa, pero ambas hacen lo mismo), ellos son, int x: valor de la coordenada cartesiana x; int y: valor de la coordenada cartesiana y; int alto: el total de celdas que abarcará el componente a lo alto del contenedor; int ancho: el total de celdas que abarcará el componente a lo ancho del contenedor; (int ins, para el caso de la sobreescritura, la distancia que habrá entre cada componente a todos sus alrededores).

Vea un ejemplo:

Si se crea un JLabel y un JTextArea, en un contenedor cualquiera, con el GridBagLayout() podría ser colocado de varias formas, para el ejemplo supongamos...

Primero

JLabel etiq = new JLabel("JLabel");
JTextArea = area = new JTextArea();

contenedor.add(etiq, grid(0, 0, 1, 1) );
contenedor.add(area, grid(1, 0, 1, 1) );

Estamos colocando el JLabel en la posición x0, y0, en donde solamente abarcará 1 celda de ancho al igual que 1 celda de alto.
El JTextArea lo colocamos en x1, y0, igualmente con 1 celda de ancho y 1 de alto.

Segundo

JLabel etiq = new JLabel("JLabel");
JTextArea = area = new JTextArea();

contenedor.add(etiq, grid(0, 0, 1, 1) );
contenedor.add(area, grid(1, 0, 2, 2) );

Estamos colocando el JLabel en la posición x0, y0, en donde solamente abarcará 1 celda de ancho al igual que 1 celda de alto.
El JTextArea lo colocamos en x1, y0, pero con 2 celdas de alto y 2 de ancho

wilru

Cordial saludo.

... y vi que sos un teso en programacion, quiero comentarte lo siguiente y con todo respeto, solicitar tu ayuda aprovechando tu espiritu colaborador y gran conocimiento:

Estoy desarrollando un pequeño proyecto para la materia de Programacion Orientada a objetos, la cual vemos en Java, consiste en la gestion de reservas para un pequeño hotel o residencia, en el cual se tiene una clase que me muestra los menus de opciones y gestiona la validacion de un usuario Administrador y otro Recepcionista(digitan login y password) para poder ingresar al sistema, otra llamada Formulario_reserva la cual captura la informacion del cliente a registrar invocando a su vez a otra clase que gestiona la reserva: crea(), elimina() y consulta(), en la clase Formulario_reserva existe un boton de "consulta" el cual al ser presionado debe de ir a otra clase llamada habitaciones en la cual queremos mostrar la disponibilidad de habitaciones en el momento de la  consulta, es decir, se tiene pensado dos tipos de habitaciones: simple y doble, aqui se debe visualizar las habitaciones libre y ocupadas por cada tipo, ademas al ser seleccionada una habitacion debe traer este dato a Formulario_reserva para guardar en un vector(de la Clase Vector de Java) junto con los demas datos del Formulario_reserva, y tambien actualizar la informcion para que en una segunda o tercer ingreso de un cliente nuevo, la habitacion anteriormente seleccionada aparezca ocupada, si una reserva es cancelada igualmente la habitacion ocupada debe aparecer como libre.

Espero ser claro en este requerimiento y agradezco inmensamente cualquier ayuda u orientacion que me puedas brindar si es tu campo y si dispones de tiempo.
El proyecto se desarrolla tipo aplicacion de escritorio en java, lo estamos haciendo en JCreator y/o eclipse. me urge terminarlo pues es trabajo final de semestre y apenas empiezo a dar pasos en programacion

Te adjunto lo que tenemos desarrollado hasta ahora, lo cual funciona correctamente, solo falta la implementacion de Habitciones...

muchisimas gracias y por favor disculpa mi atrevimiento.


/**
* @(#)Form_Reserva.java
*
*
* @author
* @version 1.00 2010/5/31
*/

import java.awt.Button;
import java.awt.Event;
import java.awt.Frame;
import java.awt.GridLayout;
import java.util.Vector;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
import java.util.*;
public class Form_Reserva extends JFrame
{
   //Habitaciones Hb = new Habitaciones();
   public static Vector R = new Vector();
   
   JLabel tipo       = new JLabel("Tipo de Habitación:");
   JLabel nomb       = new JLabel("Nombre:");
   JLabel apel       = new JLabel("Apellido:");
   JLabel cc         = new JLabel("Cedula:");
   JLabel dir        = new JLabel("Direccion:");
    JLabel tel        = new JLabel("Telefono:");
   JLabel Habit      = new JLabel("Habitación:");
   JLabel Nhabit     = new JLabel("");
   
   JTextField nombre = new JTextField("",20);
   JTextField apell = new JTextField("",20);
   JTextField ced = new JTextField("",20);
   JTextField direc = new JTextField("",20);
   JTextField tele = new JTextField("",20);
   
   Button guardar = new Button("Guardar");
   Button cancelar = new Button("Cancelar");
   Button consul = new Button("Consultar");
   
   CheckboxGroup habita = new CheckboxGroup();
   Checkbox s = new Checkbox("Simple");
   Checkbox d = new Checkbox("Doble");
   
      

   
   

    public Form_Reserva()
    {
        try
        {
           init();
        }
        catch(Exception ex)
        {
           ex.printStackTrace();
        }
    }
     void init()throws Exception
    {
        //setLayout(new GridLayout(8,2,3,2));
        Container pane  = getContentPane();
      JPanel    panel = new JPanel(new FlowLayout());
        s.setCheckboxGroup(habita);
        d.setCheckboxGroup(habita);
        s.setState(true);
       
       panel.add(tipo); panel.add(s); panel.add(d);
       panel.add(consul);
       pane.add(panel, BorderLayout.NORTH);
        panel = new JPanel(new GridLayout(1,1));
       panel.add(new Label("     ======================================================  "));
        pane.add(panel, BorderLayout.CENTER);
      
       panel = new JPanel(new GridLayout(8,2,4,4));
      
      
       panel.add(cc,null);      panel.add(ced,null);   
       panel.add(nomb,null);    panel.add(nombre,null);
       panel.add(apel,null);   panel.add(apell,null);
       panel.add(dir,null);    panel.add(direc,null);
       panel.add(tel,null);    panel.add(tele,null);
       panel.add(Habit,null);    panel.add(Nhabit,null);
       panel.add( guardar,null);    panel.add(cancelar,null);
       pane.add(panel, BorderLayout.SOUTH);
       pack();
       setLocationRelativeTo(null);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      
    }
    public static void main(String args[])
   {
      
      Form_Reserva F= new Form_Reserva();
      F.setLocation(350,250);
      F.setVisible(true);
      F.pack();
      
      
   
   }
   public boolean action (Event t, Object arg)
    {
       if(t.target== guardar)
       {
             
          Reserva r = new Reserva();
          r.CrearR((nombre.getText()),(apell.getText()),(ced.getText()),(direc.getText()),(tele.getText()) );
          R.addElement(r);
          int tv=R.size();
     
           for(int i=0;i<tv;i++){
           System.out.println(" Vector  "+R.toString());
           Reserva x=(Reserva)R.elementAt(i);
           JOptionPane.showMessageDialog(null,"Creacion Exitosa, Datos de la Reserva:\n\n Codigo:  "+r.cod_r  + " \n Nombre:  "+x.Nombre+ "\n Apellido:  "+x.Apellido+ "\n Cedula:  "+x.Cedula+"\n Direccion:  "+x.Direccion+ "\n Telefono:  "+x.Telefono +"");
           //JOptionPane.showMessageDialog(null,"Creacion Exitosa, Datos de la Reserva:\n\n   "+R.elementAt(i));
           
           
      }   
             
             
         
          return true;
         
         
       }
   
      if(t.target== cancelar)
       {
          System.exit(0);
       }
      
       if(t.target== consul)
       {
       JOptionPane.showMessageDialog(null,"Click en consiltar,");
          return true;
       }
      return false;
      
      
    }

   
   
   
   
}

la  clase reserva:*************

/**
* @(#)Reserva.java
*
*
* @author
* @version 1.00 2010/5/31
*/
import javax.swing.*;
import java.lang.*;
import java.util.*;
import java.awt.*;


public class Reserva
{
   
   //Form_Reserva Fr= new Form_Reserva();
   
   
    public String Nombre, Apellido, Cedula, Direccion, Telefono; 
    public int cod_r;   
   
    public Reserva()
    {
       
    }
   
    void CrearR(String n,String a,String c, String d, String t )
    {
       this.Nombre    =n;
       this.Apellido  =a;
       this.Cedula    =c;
       this.Direccion =d;
       this.Telefono  =t;
       this.cod_r     =Integer.parseInt(c);
   

    }
    String ConsultaR()
    {
       return   "Nombre : "+Nombre+"Apellido : "+Apellido+"Cedula : "+Cedula+"Direccion : "+Direccion+"Telefono : "+Telefono+"Codigo Reserva:"+cod_r;
    }
    String CancelarR()
    {
       return   "Se elimina Reserva:\n\nNombre : "+Nombre+"Apellido : "+Apellido+"Cedula : "+Cedula+"Direccion : "+Direccion+"Telefono : "+Telefono+"Codigo Reserva:"+cod_r;
    }
   
   
   
}

Ahora la clase que queremos implementar, he aqui una vaga idea: JTable para mostrar los datos del vector creado en la clase Formulario_Reserva, y gestionar disponibilidad de habitaciones:


/**
* @(#)Habitaciones.java
*
*
* @author
* @version 1.00 2010/5/31
*/
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;

public class Habitaciones extends JFrame
{
    //Form_Reserva Fr= new Form_Reserva();
   // Reserva      R = new Reserva();
   
   
   
   
    public Habitaciones()
    {
       
       super("Gestion Habitaciones");
       
        String[] columnNames = {"Cedula ", "Apellido"};

        //se crea la Tabla
        final JTable table = new JTable(data, columnNames);
       
        table.setPreferredScrollableViewportSize(new Dimension(300, 100));


        //Creamos un JscrollPane y le agregamos la JTable
        JScrollPane scrollPane = new JScrollPane(table);

        //Agregamos el JScrollPane al contenedor
        getContentPane().add(scrollPane, BorderLayout.CENTER);

        //manejamos la salida
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
       
       
    }
   
     public static void main(String[] args)
     {
        Habitaciones h = new Habitaciones();
        h.pack();
        h.setVisible(true);
    }
   
   
}