Crea dentro de la aplicación Java de la unidad un nuevo JFrameForm.
Crea dentro de la aplicación Java de la unidad un nuevo JFrameForm.
Crea una pequeña aplicación que contenga cuatro cuadros de texto, una etiqueta y dos botones: comprobar y salir.
El usuario podrá introducir cuatro palabras en los cuadros de texto. Al pulsar el botón «comprobar», en la etiqueta aparecerá un mensaje que indicará si hay textos repetidos en dos o más cuadros de texto. Ten en cuenta que debe mostrar únicamente un mensaje, por lo que habrá 11 combinaciones diferentes.
En caso de pulsar el botón «Salir» se saldrá de la aplicación.
Trata de hacerlo de la manera más eficiente posible.
En general, para definir elementos de Java Swing debemos eliminar las J inicial y las vocales, y extraer las tres consonantes más significativas del nombre del control. A continuación figura la lista de componentes y sus prefijos asociados:
| Contenedor | Prefijo |
| JInternalFrame | ifrm |
| JPanel | pan |
| JScrollPane | scp |
| JTabbedPane | tpn |
| JToolBar | tlb |
| Control | Prefijo |
| JButton | btn |
| JButtonGroup | btg |
| JCheckBox | cbx |
| JComboBox | cmb |
| JLabel | lbl |
| JList | lst |
| JPasswordField | pwd |
| JProgressBar | pgb |
| JScrollBar | scb |
| JTable | tbl |
| JTextArea | txa |
| JTextField | txt |
| JTextPane | txp |
| JTree | jt |
| JDateChooser | jdc |
| JCalendar | jcl |
| JRadioButton | jrb |
| Menu | Prefijo |
| JMenu | mnu |
| JMenuBar | mnb |
| JMenuItem | mni |
| Window | Prefijo |
| JColorChooser | cch |
| JDialog | dlg |
| JFileChooser | jfc |
| JFrame | frm |
| JOprionPane | opt |
| Window | Prefijo |
| DefaultTableModel | dtm |
| JDialog | dlg |
| JFileChooser | jfc |
| JFrame | frm |
| JOprionPane | opt |
Un diálogo modal respecto al sistema es una ventana que no va ceder el foco a ninguna otra aplicación hasta que se produzca una determinada acción sobre él. Por ejemplo, podríamos utilizarlos en caso de que dispongamos de un JFrame que abre una nueva ventana y al que no podemos acceder a menos que cerremos dicha ventana.
Para ello, hay que tener en cuenta que esa nueva ventana que abrimos no puede ser un JFrame, sino un JDialog. El procedimiento es el siguiente:
public DialogSalonHabana(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}
private void mniNuevaVentanaActionPerformed(java.awt.event.ActionEvent evt) {
NuevaVentanaDialog nv = new NuevaVentanaDialog(this,true);
JDialog jd = new JDialog(nv, «Dialogo modal», Dialog.ModalityType.DOCUMENT_MODAL);
nv.setVisible(true);
}
De este modo, cuando mediante el evento mniNuevaVentanaActionPerformed abramos una ventana NuevaVentanaDialog, no podremos volver a la ventana principal hasta que ésta no sea cerrada.
Diseña un botón propio que cuente con las siguientes propiedades:
Continue reading «Ejercicio UT3-E1 Creación de componentes genéricos: botón»
Aquí os dejo la presentación de clase sobre Eventos y Listeners en Java Swing.
Está disponible en SlideShare, en el siguiente enlace: http://www.slideshare.net/laurafolgadogalache/eventos-y-listeners-en-java-swing
¿Se puede ser más vago que escribir sop para que nos ponga System.out.println? ¡¡Pues sí!! Y es que con esta chuleta de atajos y plantillas para NetBeans que nos ha pasado Ivan podemos escribir un programa casi sin teclear:
https://netbeans.org/project_downloads/www/shortcuts-6.5.pdf
¡Gracias, Iván!
Basándonos en el componente de acceso a datos de HR creado en el módulo Acceso a Datos, y poniendo en práctica todo lo aprendido hasta ahora con Java Swing debéis poneros de acuerdo para crear un equipo de desarrollo donde integréis todos los elementos utilizando el repositorio GitHub.
Los diferentes perfiles de desarrollo que utilizaréis son los siguientes:
Mucho más sencillo que cargar datos de una tabla: para cargar datos de un formulario únicamente tendremos que ejecutar el método de consulta de datos de HR que necesitemos y mostrar dichos datos en los campos de texto correspondientes.
Al igual que en en caso anterior, dentro del método public nombreJPanel(), además de llamar al método initComponents; llamaremos a cargarFormulario(); El método cargar Formulario será público y no devolverá nada.
Finalmente, accedemos a la base de datos y ejecutamos el método que extraiga los datos de la misma. Cargamos cada dato en el campo de texto correspondiente y ¡listo!
public void cargarForm(){
try {
Hr hr = new Hr();
Region r = hr.consultarRegion(Integer.parseInt("3"));
this.txtPais.setText(r.getRegionName());
this.txtCodigo.setText(String.valueOf(r.getRegionId()));
} catch (ExcepcionHr ex) {
System.out.println(ex.getMensajeErrorUsuario());
}
}
Ya que en Acceso a Datos trabajamos con la base de datos HR, vamos a reuilizar uno de sus métodos para completar un jTable de nuestro formulario. Para ello debemos añadir en un JFrame un jTable y crearnos un modelo de datos de tipo DefaultTableModel en la clase de nuestro JFrame.
DefaultTableModel dtmModelo;
Además, dentro del método public nombreJPanel () además de llamar al método initComponents; llamaremos también a cargarTabla();
El método cargarTabla será público y no devolverá nada.
En primer lugar deberá definir el modelo DefaultTableModel para que no pueda ser editado por el usuario.
this.dtmModelo = new DefaultTableModel() {
@Override
public boolean isCellEditable(int fila, int columna) {
return false; //Con esto conseguimos que la tabla no se pueda editar
}
};
A continuación asignamos dicho modelo a la tabla:
this.tblTabla = new JTable(dtmModelo);
Al modelo le añadimos los nombres de columnas que vamos a necesitar. En este caso, de Regiones tomaremos el ID y el nombre de la región.
this.dtmModelo.addColumn("ID");
this.dtmModelo.addColumn("Region");
Seguidamente realizamos la conexión a la base de datos HR y obtenemos, en este caso, el ArrayList de regiones que se lo asignaremos a una variable de tipo ArrayList.
Hr hr = new Hr(); ArrayList<Region> listaRegiones = hr.listarRegions();
Seguidamente hacemos un bucle para recorrer esta lista de regiones, definiéndonos una fila en la que indicaremos el número de columnas que vamos a utilizar y asignándole a las posiciones de la fila la información extraida del array. Finalmente, en cada pasada del bucle añadirmos la fila al modelo:
for (int i = 0; i < listaRegiones.size(); i++) {
Object[] fila = new Object[2];
fila[0]= listaRegiones.get(i).getRegionId();
fila[1]= listaRegiones.get(i).getRegionName();
this.dtmModelo.addRow(fila);
}
Para actualizar la información será necesario realizar el método updateUI a la tabla y a continuación ejecutar el método setViewportView del JScrollPane para actualizar la información que contiene.
this.tblTabla.updateUI(); this.scpScrollPane.setViewportView(tblTabla);
¡No olvides implementar el try-catch correspondiente! De lo contrario te dará error.