Archivo

Posts Tagged ‘Java GUI’

Java, Creando JTable con swing

noviembre 12, 2009 6 comentarios

Bueno aqui pondré una forma sencilla de crear nuestra primera tabla con java.
La siguiente imagen nos muestra como esta compuesta una tabla
tabla

Como muestra la imagen la tabla se compone de:

  • Columas (Verticales)
  • Filas (Horizontales)

A la vez, las filas se componen de Celdas dependiendo de la fila y columna.

La tabla de la imagen tiene 3 Columnas

  • Columna A
  • Columna B
  • Columna C

1 Fila con 3 Celdas

  • X
  • Y
  • Z

En Java existe un componente que nos permitirá dibujar éste tipo de tablas y su nombre es JTable

JTable tiene el constructor sobrecargado y uno de ellos me pide dos parametros:
JTable(Vector rowData, Vector columnNames)

Un Vector de Filas y un Vector de Columnas

Tip: Vector es una clase que implementa la interface List, ArrayList tambien implementa la interface List, por lo que la forma de uso de Vector y ArrayList es igual.

Teniendo el conocimiento de lo anterior ahora lo pasaremos a codigo.

/**
 * @(#)Tabla.java
 *
 * Tabla application
 *
 * @author EstebanFuentealba
 * @version 1.00 2009/11/11
 */
 
/* Importo lo necesario para poder dibujar ventanas */
import java.awt.*;
import javax.swing.*;
/* Importo la Clase Vector que se encuentra en el package java.util */
import java.util.Vector;

/* mi clase Tabla hereda de JFrame */
public class Tabla extends JFrame {
    
    public Tabla() {
    	/* Le setearé el titulo a la ventana */
    	super("Mi tabla");
    	/* a la ventana le doy dimensiones de 300 de ancho x 200 de alto */
    	this.setSize(300,200);
    	
    	/* Creo una instancia de la clase Vector llamada 'columnas' */
    	Vector columnas = new Vector();
    	/* 
    	 	A ese vector le agrego datos, estos datos vendrán a ser las
    	 	columnas de la tabla.
    	*/
    	columnas.add("Columna A");
    	columnas.add("Columna B");
    	columnas.add("Columna C");

    	
    	/* 
    	 	Creo una instancia de la clase Vector llamada 'filas' , este vector
    	 	tendrá todas las filas de la tabla.
    	*/
    	Vector filas = new Vector();
    	
    	/*
    	 	Creo otro objeto de la clase Vector llamado 'fila', esto representará a
    	 	una fila en particular y cada elemento que agregue a este vector
    	 	será una celda.
    	 */
    	Vector fila = new Vector();
    	
    	fila.add("X");
    	fila.add("Y");
    	fila.add("Z");
  
		/* Agrego la fila al vector que contiene todas las filas */
    	filas.add(fila);
    	
    	/* 
    	 	Creo una instancia de JTable y le paso como parametro los dos Vectores:
    	 		-filas
    	 		-columnas	
    	 */
    	JTable tbl = new JTable(filas,columnas);
    	/* Creo una instancia de JScrollPane y le paso como parametro la tabla */
    	JScrollPane panel =new JScrollPane(tbl);
		/* Por ultimo agrego ese objeto de JScrollPane al contenedor de la ventana */
    	this.getContentPane().add(panel);
    	
    	this.setVisible(true);
    }
    public static void main(String[] args) {
    	new Tabla();
    }
}

Con eso ya tienen una tabla funcionando =)

Saludos!

Categorías: Java Etiquetas: , , , , , ,

Certamen 2 [PEF2501]

Aquí dejo el Certamen 2 de la seccion PEF2501 de Programacion Orientada A Objetos.

Enunciado:
El restaurant PINPON ha decidido ofertar almuerzos a todos los trabajadores
de la empresa que así lo soliciten, para esto ha encargado la confección de
un sistema que permita llevar esos pedidos.

DEFINICIÓN DE CLASES – 20 PUNTOS
· Clase MenuEjecutivo.java

ATRIBUTOS TIPO
Entrada String
conConsome boolean
platoFondo String
Postre String
Liquido String
conCafe boolean

MÉTODOS

  • Constructor con parámetros (que reciba todos los atributos)
  • Accesador para cada atributo
  • Mutador para cada atributo
  • toString

 

REQUERIMIENTOS DE INTERFAZ – 30 PUNTOS
Basado en el anterior modelo de clases crear una aplicación que despliegue la
siguiente ventana:

C2

 

Una vez escogidas las alternativas se debe calcular el precio del menú. Para
lo anterior considere las siguientes reglas:

ENTRADA  VALOR
Palta Reina  1.500
Tomate relleno  1.400
Vegetariano  800

PLATO FONFO  VALOR
Arroz con pollo  2.300
Bistec a lo pobre  2.800
Tortilla española  800

POSTRE  VALOR
Fruta  100
De la casa  250

 

Los valores de los líquidos son los que se indican a continuación:

LÍQUIDO  VALOR
Bebida  300
Cerveza  420

Si  escoge  consomé  y  café  se  debe  aplicar  un  recargo  de  100,  si  escoge  sólo
café o sólo consomé se debe aplicar un recargo de 80.

El precio del menú se calcula de la siguiente manera:

PRECIO_MENU  =  VALOR_ENTRADA  +  VALOR_PLATO_FONDO  +  VALOR_POSTRE  +
VALOR_LIQUIDO + RECARGO

Se pide:

Implementar  las  acciones  en  cada  botón  de  la  ventana  de  acuerdo  a  las
siguientes consideraciones:

·  Botón Ingresar debe desplegar el contenido del menú escogido junto con
el valor de este en el TextArea de la ventana, considerar instanciar un
objeto de la clase MenuEjecutivo.

·  Botón Limpiar debe dejar los componentes limpios o en su estado inicial.
·  Botón Salir debe terminar la ejecución de la aplicación.

(50 PUNTOS)

 

MenuEjecutivo.java


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;


public class MenuEjecutivo {
	
	private String 	entrada;
	private String 	platoFondo;
	private String 	postre;
	private String 	liquido;
	
	private boolean conConsome;
	private boolean conCafe;
	
	public MenuEjecutivo() { }
    public MenuEjecutivo(String entrada, boolean conConsome, String platoFondo,String postre, String liquido, boolean conCafe) {
    	this.entrada 	= entrada;
    	this.conConsome = conConsome;
    	this.platoFondo = platoFondo;
    	this.postre 	= postre;
    	this.liquido 	= liquido;
    	this.conCafe 	= conCafe;
    }

    /* Accesador */
    
    public String getEntrada(){
    	return this.entrada;
    }
    
    public boolean getConConsome(){
    	return this.conConsome;
    }
    
    public String getPlatoFondo(){
    	return this.platoFondo;
    }
    
    public String getPostre(){
    	return this.postre;
    }
    
    public String getLiquido(){
    	return this.liquido;
    }
    
    public boolean getConCafe(){
    	return this.conCafe;
    }
    
  
    /* Mutadores */

    public void setEntrada(String valor){
    	this.entrada = valor;
    }
    
    public void setConConsome(boolean valor){
    	this.conConsome = valor;
    }
    
    public void setPlatoFondo(String valor){
    	this.platoFondo = valor;
    }
    
    public void setPostre(String valor){
    	this.postre = valor;
    }
    
    public void setLiquido(String valor){
    	this.liquido = valor;
    }
    
    public void setConCafe(boolean valor){
    	this.conCafe = valor;
    }
    public int getValorEntrada() {
    	int valorEntrada = 0;
    	if(this.getEntrada().equals("Palta Reina")) {
    		valorEntrada = 1500;
    	} 
    	else if(this.getEntrada().equals("Tomate Relleno")) {
    		valorEntrada = 1400;
    	}
    	else if(this.getEntrada().equals("Vegetariano")) {
    		valorEntrada = 800;
    	}
    	return valorEntrada;
    }
    public int getValorPlatoFondo() {
    	int valorPlatoFondo = 0;
    	if(this.getPlatoFondo().equals("Arroz con Pollo")) {
    		valorPlatoFondo = 2300;
    	}
    	else if(this.getPlatoFondo().equals("Bistec a lo Pobre")) {
    		valorPlatoFondo = 2800;
    	}
    	else if(this.getPlatoFondo().equals("Tortilla Española")) {
    		valorPlatoFondo = 800;
    	}
    	return valorPlatoFondo;
    }
    public int getValorPostre() {
    	int valorPostre = 0;
    	if(this.getPostre().toLowerCase().equals("fruta")) {
    		valorPostre = 100;
    	}
    	else if(this.getPostre().toLowerCase().equals("de la casa")) {
    		valorPostre = 250;
    	} else {
    		valorPostre = 0;
    	}
    	return valorPostre;
    }
    public int getValorLiquido() {
    	int valorLiquido = 0;
    	if(this.getLiquido().equals("Bebida")) {
    		valorLiquido = 300;
    	}
    	else if(this.getLiquido().equals("Cerveza")) {
    		valorLiquido = 420;
    	}
    	return valorLiquido;
    }
    public int getValorRecargo() {
    	int recargo = 0;
    	if(conCafe && conConsome) {
    		recargo = 100;
    	} else if(conCafe || conConsome) {
    		recargo = 80;
    	}
    	return recargo;
    }
    public int getValorTotal() {
    	return this.getValorEntrada() + this.getValorPlatoFondo() + this.getValorPostre() + this.getValorLiquido() + this.getValorRecargo();
    }
    /* Sobrescritura del toString() */
    public String toString() {
    	return "Entrada: "+this.getEntrada()+"\t$"+String.valueOf(this.getValorEntrada())+"\nPlato de Fondo: "+this.getPlatoFondo()+"\t$"+String.valueOf(this.getValorPlatoFondo())+"\nPostre: "+this.getPostre()+"\t$"+String.valueOf(this.getValorPostre())+"\nLiquido: "+this.getLiquido()+"\t$"+String.valueOf(this.getValorLiquido())+"\nCon Consome: "+((this.getConConsome()) ? "Si" : "No")+"\nCon Café: "+((this.getConCafe()) ? "Si" : "No")+"\nRecargo: $"+String.valueOf(this.getValorRecargo())+"\nTotal: "+this.getValorTotal();
    }
}

WCertamen2.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class WCertamen2 extends JFrame {
	
	private JComboBox 		cmbEntrada,cmbFondo;
	private JTextField 		txtPostre;
	private JRadioButton 	rbCafe,rbConsome,rbAmbos,rbBebida,rbCerveza;
	private JButton			btnIngresar,btnLimpiar,btnCerrar;
	private JTextArea		areaDetalle;
	private ButtonGroup 	grupoA,grupoB;
	
	private MenuEjecutivo	menu;
	
	public WCertamen2() {
		super("Registro de Pedido");
		this.cmbEntrada		= new JComboBox();
			this.cmbEntrada.addItem("Palta Reina");
			this.cmbEntrada.addItem("Tomate Relleno");
			this.cmbEntrada.addItem("Vegetariano");
		this.cmbFondo 		= new JComboBox();
			this.cmbFondo.addItem("Arroz con Pollo");
			this.cmbFondo.addItem("Bistec a lo Pobre");
			this.cmbFondo.addItem("Tortilla Española");
		
		this.txtPostre 		= new JTextField();
		
		this.rbCafe			= new JRadioButton("Café");
		this.rbConsome		= new JRadioButton("Consome");
		this.rbAmbos		= new JRadioButton("Ambos");
		
		this.rbBebida		= new JRadioButton("Bebida");
		this.rbCerveza		= new JRadioButton("Cerveza");
		
		this.btnIngresar	= new JButton("Ingresar");
		this.btnLimpiar		= new JButton("Limpiar");
		this.btnCerrar		= new JButton("Cerrar");
		
		this.areaDetalle	= new JTextArea();
		this.init();
	}
	public void init() {
		this.setSize(300,450);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
	
		grupoA = new ButtonGroup();
		grupoA.add(rbCafe);
		grupoA.add(rbConsome);
		grupoA.add(rbAmbos);
		
		grupoB = new ButtonGroup();
		grupoB.add(rbBebida);
		grupoB.add(rbCerveza);
		
		
		JPanel panelComida	= new JPanel();
		panelComida.setBorder(new TitledBorder(new EtchedBorder(),"Comida"));
		panelComida.setLayout(new GridLayout(2,2));
			panelComida.add(new JLabel("Entrada"));
			panelComida.add(cmbEntrada);
			panelComida.add(new JLabel("Plato Fondo"));
			panelComida.add(cmbFondo);
		
		Box horizontal = Box.createHorizontalBox();
		horizontal.setBorder(new TitledBorder(new EtchedBorder(),"Postre"));
			horizontal.add(new JLabel("Postre "));
			horizontal.add(txtPostre);
			horizontal.add(new JLabel(" Fruta,de la casa, sin postre"));
		
		
		JPanel panelAbajo = new JPanel();
		panelAbajo.setLayout(new GridLayout(2,2));
		
			JPanel panelCafeConsome = new JPanel();
			panelCafeConsome.setBorder(new TitledBorder(new EtchedBorder(),"Café/Consomé"));
			panelCafeConsome.setLayout(new GridLayout(3,1));
				panelCafeConsome.add(rbCafe);
				panelCafeConsome.add(rbConsome);
				panelCafeConsome.add(rbAmbos);
		panelAbajo.add(panelCafeConsome);
		
			JPanel panelLiquido = new JPanel();
			panelLiquido.setBorder(new TitledBorder(new EtchedBorder(),"Líquido"));
			panelLiquido.setLayout(new GridLayout(2,1));
				panelLiquido.add(rbBebida);
				panelLiquido.add(rbCerveza);
		panelAbajo.add(panelLiquido);
		
			JPanel panelDetalle = new JPanel();
			panelDetalle.setBorder(new TitledBorder(new EtchedBorder(),"Detalle Menú"));
			panelDetalle.setLayout(new GridLayout());
				panelDetalle.add(areaDetalle);
		panelAbajo.add(panelDetalle);
		
			JPanel panelBotones = new JPanel();
			panelBotones.setLayout(new GridBagLayout());
				panelBotones.add(btnIngresar);
				panelBotones.add(btnLimpiar);
				panelBotones.add(btnCerrar);
		panelAbajo.add(panelBotones);
		
		
		this.getContentPane().add(panelComida,BorderLayout.NORTH);
		this.getContentPane().add(horizontal,BorderLayout.CENTER);
		this.getContentPane().add(panelAbajo,BorderLayout.SOUTH);
		
		this.programarEventos();
		this.pack();
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setVisible(true);
	}
	public void programarEventos() {
		
		ActionListener agregar = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String entrada 		= cmbEntrada.getSelectedItem().toString();
				String platoFondo 	= cmbFondo.getSelectedItem().toString();
				String postre 		= txtPostre.getText();
				
				boolean conCafe 	= false;
				boolean conConsome 	= false;
				if(rbCafe.isSelected()) {
					conCafe 	= true;
				}
				if(rbConsome.isSelected()) {
					conConsome 	= true;
				}
				if(rbAmbos.isSelected()) {
					conCafe 	= true;
					conConsome 	= true;
				}
				
				String liquido		= "";

				if(rbBebida.isSelected()) {
					liquido = "Bebida";
				}
				if(rbCerveza.isSelected()) {
					liquido = "Cerveza";
				}
				//MenuEjecutivo(String entrada, boolean conConsome, String platoFondo,String postre, String liquido, boolean conCafe)
				menu = new MenuEjecutivo(entrada,conConsome,platoFondo,postre,liquido,conCafe);
				areaDetalle.setText(menu.toString());
				pack();
			}	
		};
		this.btnIngresar.addActionListener(agregar);
		
		ActionListener limpiar = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				txtPostre.setText("");
				grupoA.clearSelection();
				grupoB.clearSelection();
				areaDetalle.setText("");
				pack();
			}	
		};
		this.btnLimpiar.addActionListener(limpiar);
		
		ActionListener cerrar = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}	
		};
		this.btnCerrar.addActionListener(cerrar);
		
	}
}
public class CertamenDos {
    public static void main(String[] args) {
    	new WCertamen2();
    }
}

Descargar Codigo de Fuente:
http://estebanfuentealba.net/ayudantia/Certamen2-PEF2501.rar