import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.text.*;
public class MenuCena extends JFrame implements ItemListener, ActionListener
{ String platos[] = {"Entrantes","Carnes","Pescados","Postres","Bebidas","Cafe-Copa"}; String variedades[][]={ {"Jamon","Marisco","Ensalada","QuitaGranos"}, {"Ternera","Chuleton","Pato a la naranja","Filete de cerdo","OsoBuco","Filete Plancha"}, {"Merluza en salsa","Bacalao al pil pil","Besugo"}, {"Tarta al wiski","Helado","Postre de la casa"}, {"Vino Blanco","Vino Tinto","Agua","Cerveza"}, {"solo","cortado","con leche","pacharan","whisky","nada"} };
String precio[][]={ {"12","15.5","6.3","20"}, {"10.0","15.5","9.90","2.5","4.5","4.5"}, {"9.9","10","14"}, {"3","3","4"}, {"7","8","2.5","4"}, {"1","1.1","1.2","3","4","0"} };
ButtonGroup gb[]= new ButtonGroup[platos.length];
JPanel p,p1,p2,p3,p4,p2i[]= new JPanel[gb.length];
JButton b1,b2,b3,b4;
JTextArea ta;
JScrollPane tajsp;
JScrollPane jsp;
JRadioButton rb[][];//= new JRadioButton[platos.length][variedades[5].length];
JCheckBox cb[]= new JCheckBox[platos.length];
boolean agotado[][];
BorderLayout bl;
Font negro,rojo;
public MenuCena()
{ int i,j; Insets insets= new Insets(65,50,65,50);
p =new JPanel(new GridLayout(4,1));
p2=new JPanel(new GridLayout(1,gb.length));
p1=new JPanel(new GridLayout(1,1));
for(i=0;i<gb.length;i++)
{ p2i[i]=new JPanel(new GridLayout(variedades.length,1));
p2i[i].setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),platos[i]));
}
p3=new JPanel(new GridLayout(1,1));
p4=new JPanel(new BorderLayout());//new GridLayout(1,1));
// panel 1
for(i=0;i<cb.length; i++)
{ cb[i]= new JCheckBox(platos[i]);
cb[i].addItemListener(this);
cb[i].setBackground(Color.green);
p1.add(cb[i]);
}
// panel 2
rb= new JRadioButton[platos.length][];
agotado = new boolean[platos.length][];
for(i=0;i<platos.length;i++)
{ rb[i]= new JRadioButton[variedades[i].length]; agotado[i]= new boolean[variedades[i].length];
}
for(i=0;i<gb.length; i++)
{ gb[i]= new ButtonGroup();
for (j=0; j<variedades[i].length; j++)
{ rb[i][j]= new JRadioButton(variedades[i][j],false);
agotado[i][j]= false;
rb[i][j].addItemListener(this);
rb[i][j].setEnabled(false);
gb[i].add(rb[i][j]);
p2i[i].add(rb[i][j]);
rb[i][j].setBackground(Color.cyan);
rb[i][j].setToolTipText(variedades[i][j]+"-->"+precio[i][j]);
}
rb[i][0].setSelected(true);
p2.add(p2i[i]);
}
// Panel 3 area de texto.
ta = new JTextArea(" CAFETERIA CANDY ELIJA un menu.",15,40); ta.setBackground(Color.green);
ta.setBorder(BorderFactory.createTitledBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED ),"MENU ELEGIDO"));//createEtchedBorder(),"MENU ELEGIDO"));
ta.setEditable(false);
tajsp = new JScrollPane(ta);
// try{
tajsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
tajsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
// }catch(IllegalArgumentException iae){ta.append("Argumento ilegal");}
//panel 4 Botones
b1 = new JButton("SELECCIONAR "); b2 = new JButton("DETO NO KEDA"); b3 = new JButton(" REPONER "); b4 = new JButton(" SALIR "); b3.setBackground(Color.red);
b1.setBackground(Color.green);
b2.setBackground(Color.white);
b1. setMargin(insets);
b2. setMargin(insets);
b3. setMargin(insets);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(new ActionListener(){public void actionPerformed( ActionEvent aw) {System.exit(-2); }});
p4.add(b3,BorderLayout.WEST);
p4.add(b1,BorderLayout.CENTER);
p4.add(b2,BorderLayout.EAST);
p4.add(b4,BorderLayout.SOUTH);
p3.add(tajsp);// area de texto con deslizadores.
p.add(p1); p.add(p2); p.add(p3); p.add(p4);
this.getContentPane().add(p);
}
public void itemStateChanged(ItemEvent ie)
{ Object o;
o=ie.getSource();
if (o instanceof JCheckBox)
{ for(int i=0;i<platos.length;i++)
{ if((JCheckBox)ie.getItemSelectable()==cb[i])
if(((JCheckBox)o).isSelected())
activarBotonera(i,variedades[i].length, true);
else
activarBotonera(i,variedades[i].length,false);
}
}
}
private void activarBotonera(int k,int n,boolean sw)
{ for(int i=0; i<n;i++)
if(sw && !agotado[k][i]) rb[k][i].setEnabled(true);
else rb[k][i].setEnabled(false);
}
public void actionPerformed(ActionEvent ae)
{ NumberFormat formato ;
double tot,x;
int i,j;
formato = NumberFormat.getNumberInstance();
formato.setMaximumFractionDigits(2);
formato.setMinimumFractionDigits(2);
formato.setMinimumIntegerDigits(3);
if(ae.getSource() instanceof JButton)
{ if(((JButton)ae.getSource())==b1) // SELECCIONAR
{ // borrar pantalla previa
ta.setText(""); tot=0;
for(i=0;i<platos.length;i++)
{ if(cb[i].isSelected())
for(j=0; j<variedades[i].length;j++)
if(!agotado[i][j] && rb[i][j].isSelected())
{ x=Double.parseDouble(precio[i][j]); ta.append("precio : "+formato.format(x)+" ¦ "+cb[i].getText() + ": " + rb[i][j].getText()+"\n"); tot += x;
}
}
double iva = tot*.7;
ta.append("TOTAL = "+ formato.format(tot)+"\nIVA (7%) = "+ formato.format(tot*.07));//iva));
ta.setForeground(Color.red);
ta.append( "\nFACTURA="+formato.format(tot*1.07));
repaint();
ta.setForeground(Color.BLUE);
}
else if(((JButton)ae.getSource())==b2) // AGOTADO
{ for(i=0;i<platos.length;i++)
if(cb[i].isSelected())
for(j=0; j<variedades[i].length;j++)
if( rb[i][j].isSelected())
{ agotado[i][j] =true; rb[i][j].setEnabled(false);
}
}
else if(((JButton)ae.getSource())==b3) // REPONER
{ for(i=0;i<platos.length;i++)
if(cb[i].isSelected())
for(j=0; j<variedades[i].length;j++)
{ // reponer todos.
//if(!rb[i][j].isEnabled() && agotado[i][j]) // no se pueden seleccionar si desactivados
{ agotado[i][j] =false;
rb[i][j].setEnabled(true);
}
}
}
}
}
public static void main(String[]args)
{ MenuCena mn= new MenuCena();
mn.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent we)
{ System.exit(1); }}); mn.setSize(600,800);
mn.setResizable(false);
mn.setVisible(true);
}
}
Comentarios sobre la versión: Versión 1.0 (0)
No hay comentarios