Java + Swing 016. Modo diseño en NetBeans. Trabajando con JComboBox y jTable.

Ejercicio: Realizar una pequeña aplicación que nos muestre la forma de agregar ítems a un JComboBox y jTable.
Diseño de formulario con JFrame.
En la imagen podemos ver el diseño y a un costado los nombres de variables de cada objeto, es importante para que se ajuste a los métodos que se crean. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho y “Cambiar nombre de variable…”. Es fácil distinguir cual corresponde a cada objeto, va de izquierda a derecha e el diseño.
Diseño del formulario utilizando JFrame. Como elementos utilizamos “JComboBox”, “Botón”, y “Tabla”.
Observación: Tomar en cuenta que hay que utilizar las importaciones “import”, básico para utilizar ciertos métodos y objetos. El “setLocationRelativeTo(null)” sirve para centrar el formulario. Los métodos llamados en el constructor de la clase se inician al ejecutar el formulario. Las variables de clase se pueden llamar desde cualquier método, por tanto se utiliza para objetos que se necesitan utilizar en varias ubicaciones.
Creamos los métodos siguientes en el apartado “Fuente”. Estos métodos utilizan conversiones de tipos de datos, controles de excepciones y demás para controlar lo mejor posible el resultado. Se agregan comentarios para tratar de facilitar el entendimiento del funcionamiento de cada código.
Código Java
private void comboUno(){
//Este método nos permite cargar el comboUno.
//Utilizamos el DefaultComboBoxModel para cargar los datos, es una de las
//tantas formas.
jComboBox1.setModel(new DefaultComboBoxModel(new Object[]{
"Monitores","Impresoras","Teclados","CPU","Memoria RAM"
}));
}
private void tableModel(){
//Este metodo configura el DefaultTableModel, nos permite dar forma a la tabla.
jTable1.getColumnModel().getColumn(0).setPreferredWidth(10);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(300);
model = (DefaultTableModel)jTable1.getModel();
model.setNumRows(0);

}
private void agregarTabla(){
//Con este método agregamos datos a la tabla.
if(nombre.getText().isEmpty()){
JOptionPane.showMessageDialog(null, "No hay datos.");
}
else{
//El id de cada fila lo generamos. Es Opcional.
int id = jTable1.getRowCount() + 1;
//Utilizamos el model de la tabla que configuramos en tableModel().
model.addRow(new Object[]{
id,nombre.getText()
});
nombre.setText(null);
}
}
private void arrayTabla(){
//Los datos de la tabla lo pasamos a un Array con este método.
int rowCount = jTable1.getRowCount();
if( rowCount != 0){
//Utilizamos jTable1.getRowCount() para obtener la cantidad de filas
//que será la cantidad de elementos del Array.
String[] nombres = new String[jTable1.getRowCount()];
//Cargamos el Array con los datos de la tabla.
for (int i = 0; i < nombres.length; i++) {
//Utilizamos el getValueAt del model para obtener los datos de la tabla.
//El primer parámetro es la fila, el segundo la columna.
//Las columnas se cuentan desde cero.
nombres[i]= model.getValueAt(i, 1).toString();
}
//Cada vez que ejecutemos el método también limpiamos el ComboBox con removeAllItems().
//De esta forma no se duplican los datos con cada ejecusión.
jComboBox2.removeAllItems();
//Con un for recorremos el Array de String.
for (int i = 0; i < nombres.length; i++) {
String string = nombres[i];
//Utilizamos addItem, para agregar cada ítem del combo.
jComboBox2.addItem(string);
}
}
}
private void eliminarTable(){
//Metodo para remover datos de la tabla.
try {
int selectedRow = jTable1.getSelectedRow();
if(jTable1.getRowCount() > 0){
model.removeRow(selectedRow);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "No seleccionado para eliminar.");
}
}
private void arrayLista(){
//Metodo similar a la anterior, utilizando Array literal.
String[] dias = {"Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"};
jComboBox3.removeAllItems();
for (int i = 0; i < dias.length; i++) {
String string = dias[i];
jComboBox3.addItem(string);
}
}
Utilizamos el evento “ActionPerformed” para llamar los métodos desde los botones. Para utilizar un “Evento” hacemos clic derecho sobre el objeto y seleccionamos “Eventos” de la lista utilizamos la que podamos aplicar al objeto. En la mayoría de los casos se utiliza el “ActionPerformed”. Se agregan comentarios para tratar de facilitar el entendimiento.
Código Java
    private void cargarUnoActionPerformed(java.awt.event.ActionEvent evt) {                                          
//Evento botón cargarUno.
comboUno();
}

private void agregarTablaActionPerformed(java.awt.event.ActionEvent evt) {
//Evento botón agregarTabla.
agregarTabla();
}

private void cargarDosActionPerformed(java.awt.event.ActionEvent evt) {
//Evento botón cargarDos.
arrayTabla();
}

private void cargarTresActionPerformed(java.awt.event.ActionEvent evt) {
//Evento botón cargarTres.
arrayLista();
}

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
//Evento jComboBox1 para obtener datos seleccionados y pasar a un JTextField.
//El try para capturar posibles excepciones.
try {
comboUno.setText(jComboBox1.getSelectedItem().toString());
} catch (Exception e) {
}
}

private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {
//Evento jComboBox2 para obtener datos seleccionados y pasar a un JTextField.
try {
comboDos.setText(jComboBox2.getSelectedItem().toString());
} catch (Exception e) {
}

}

private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt) {
//Evento jComboBox2 para obtener datos seleccionados y pasar a un JTextField.
try {
comboTres.setText(jComboBox3.getSelectedItem().toString());
} catch (Exception e) {
}

}

private void eliminarFilaActionPerformed(java.awt.event.ActionEvent evt) {
//Evento botón eliminarFila.
eliminarTable();
}
Por último tenemos el formulario en ejecución.

No hay comentarios :

Publicar un comentario