Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Ejercicios de Java.Pantalla de altas

Para el desarrollo de la presentación gráfica, que empezamos en este artículo, hemos optado por trabajar con el paquete swing, en vez de hacerlo directamente con awt.

Si revisáis los ejercicios anteriores veréis que ya tenemos lista la conexión, y una clase de acceso a datos que se encarga de realizar físicamente las altas, bajas y modificaciones, y controlar el puntero, en los listados, por lo que lo único que tiene que hacer esta clase es presentar la pantalla, recoger los datos e instanciar la clase de datos para que los grabe.

La primera parte se dedica a crear todos los componentes gráficos que va a utilizar

	private JLabel lblTitulo = new JLabel("Titulo: ");
	private JTextField txtTitulo = new JTextField(30);
	private JLabel lblAutor = new JLabel("Autor: ");
	private JTextField txtAutor = new JTextField(30);
	private JLabel lblGenero = new JLabel("Genero: ");
	private JTextField txtGenero = new JTextField(30);
	private JLabel lblPrecio = new JLabel("Precio: ");
	private JTextField txtPrecio = new JTextField(10);
	private JButton btnGuardar=new JButton("Guardar");
	private JButton btnLimpiar=new JButton("Limpiar");

El constructor tiene que llamar a super, ya que esta clase extiende JFrame, y una vez creado el frame, utiliza el metodo inicio() para rellenarlo con los elementos de la pantalla

	public NuevoLibro(){

		super("Añadir nuevo libro");

		inicio();
	}

	public void inicio() {
		this.getContentPane().setLayout(new GridLayout(5,2));
		this.getContentPane().add(lblTitulo);
		this.getContentPane().add(lblAutor);
		this.getContentPane().add(txtTitulo);
		this.getContentPane().add(txtAutor);
		this.getContentPane().add(lblGenero);
		this.getContentPane().add(lblPrecio);
		this.getContentPane().add(txtGenero);
		this.getContentPane().add(txtPrecio);
		this.getContentPane().add(btnGuardar);
		this.getContentPane().add(btnLimpiar);

		this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);

		btnGuardar.addActionListener(this);
		btnLimpiar.addActionListener(this);

		this.setLocation(250,150);
		this.setSize(400,200);
		this.setVisible(true);
	}

Utilizamos this.getContentPane(), para obtener el objeto panel existente en JFrame, y establecer el layout y cargarle todos los componentes (JLAbel, JTextField, y JBoton)

el comando this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE); establece el comportamiento del botón de cerrar ventana.

Le añadimos los ActionListener a los botones, y mostramos la pantalla.

A partir de ese momento, deberemos esperar a que el usuario realice alguna acción, p. ej. pulsando botones, para que nuestra clase sea llamada en el método actionPerformed()

	public void actionPerformed(ActionEvent event) {
		if (event.getSource()==btnGuardar)
			guarda();
		else if (event.getSource()==btnLimpiar)
			limpia();
	}

Al llegar a este método, deberémos averiguar desde donde ha sido llamado, para eso utilizamos event.getSource() que nos facilita el objeto que disparó el evento, lo comparamos con los posibles, (btnGuardar, y btnLimpiar) y en función de cual sea, lanzamos el metodo correspondiente.

void limpia() {
		txtTitulo.setText("");
		txtAutor.setText("");
		txtGenero.setText("");
		txtPrecio.setText("");
	}

	void guarda()	{
		String sentencia;
		double precio;

		if (txtTitulo.getText().trim().equals("")) 	{
			VentanaError ve=new VentanaError("Falta el título");
			return;
		}

		try {
			precio=Double.parseDouble(txtPrecio.getText());
		} catch (NumberFormatException e) {
			VentanaError ve=new VentanaError
                                          ("El precio debe ser numérico");
			return;
		}
		Libros l = new Libros();
		l.setTitulo(txtTitulo.getText());
		l.setGenero(txtGenero.getText());
		l.setAutor(txtAutor.getText());
		l.setPrecio(precio);
		l.grabarRegistro();
	}

El método limpia, mueve a los componentes de pantalla un cadena nula, para borrarlos, y dejarlos vacíos, mientras que el método guardar, comprueba que se haya entrado Titulo, y que el precio sea númerico, y, si todo esta bien, instancia un objeto Libros, carga los atributos con los datos entrados, y llama al método grabarRegistro() para dejar la información en la tabla.

 

Como siempre aquí está la clase completa:

package Ventana;

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

import AccesoAdatos.Libros;

import java.sql.*;

@SuppressWarnings("serial")
public class NuevoLibro extends JFrame implements ActionListener {
	Statement sql=null;

	private JLabel lblTitulo = new JLabel("Titulo: ");
	private JTextField txtTitulo = new JTextField(30);
	private JLabel lblAutor = new JLabel("Autor: ");
	private JTextField txtAutor = new JTextField(30);
	private JLabel lblGenero = new JLabel("Genero: ");
	private JTextField txtGenero = new JTextField(30);
	private JLabel lblPrecio = new JLabel("Precio: ");
	private JTextField txtPrecio = new JTextField(10);
	private JButton btnGuardar=new JButton("Guardar");
	private JButton btnLimpiar=new JButton("Limpiar");

	public NuevoLibro(){

		super("Añadir nuevo libro");

		inicio();
	}

	public void inicio() {
		this.getContentPane().setLayout(new GridLayout(5,2));
		this.getContentPane().add(lblTitulo);
		this.getContentPane().add(lblAutor);
		this.getContentPane().add(txtTitulo);
		this.getContentPane().add(txtAutor);
		this.getContentPane().add(lblGenero);
		this.getContentPane().add(lblPrecio);
		this.getContentPane().add(txtGenero);
		this.getContentPane().add(txtPrecio);
		this.getContentPane().add(btnGuardar);
		this.getContentPane().add(btnLimpiar);

		this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);

		btnGuardar.addActionListener(this);
		btnLimpiar.addActionListener(this);

		this.setLocation(250,150);
		this.setSize(400,200);
		this.setVisible(true);
	}
	public void actionPerformed(ActionEvent event) {
		if (event.getSource()==btnGuardar)
			guarda();
		else if (event.getSource()==btnLimpiar)
			limpia();
	}

	void limpia() {
		txtTitulo.setText("");
		txtAutor.setText("");
		txtGenero.setText("");
		txtPrecio.setText("");
	}

	void guarda()	{
		String sentencia;
		double precio;

		if (txtTitulo.getText().trim().equals("")) 	{
			VentanaError ve=new VentanaError("Falta el título");
			return;
		}

		try {
			precio=Double.parseDouble(txtPrecio.getText());
		} catch (NumberFormatException e) {
			VentanaError ve=new VentanaError
                                          ("El precio debe ser numérico");
			return;
		}
		Libros l = new Libros();
		l.setTitulo(txtTitulo.getText());
		l.setGenero(txtGenero.getText());
		l.setAutor(txtAutor.getText());
		l.setPrecio(precio);
		l.grabarRegistro();
	}
}

 

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 3.139.107.241
Proxy: 3.139.107.241
Remote host: ec2-3-139-107-241.us-east-2.compute.amazonaws.com
Remote port: 41628
** 3.139.107.241, 172.69.58.99