martes, 28 de mayo de 2024

modelo JTable con un Arraylist

 Siempre vi que habían ventajas en usar un ArrayList como modelo de un JTable y heredando de un AbstractTableModel, lo pongo aquí para cuando alguien lo necesite hacer de esta forma.

package modelo;


import java.util.ArrayList;


import javax.swing.table.AbstractTableModel;

public class ModeloTabla extends AbstractTableModel {

private static final long serialVersionUID = 1L;

private ArrayList<Object[]> data;

private String[] columnNames;


public ModeloTabla(ArrayList<Object[]> data, String[] columnNames) {

        this.data = data;

        this.columnNames = columnNames;

    }

    

public ModeloTabla(String[] columnNames) {

    this.data = new ArrayList<Object[]>();

    this.columnNames = columnNames;

    }

    

public ArrayList<Object[]> getdata(){

    return this.data;

    }


@Override

public int getRowCount() {

        return data.size();

    }


@Override

public int getColumnCount() {

        return columnNames.length;

    }


@Override

public String getColumnName(int columnIndex) {

        return columnNames[columnIndex];

    }

    

@Override

public Class<?> getColumnClass(int columnIndex){

        return getValueAt(0,columnIndex).getClass();

    }


@Override

public Object getValueAt(int rowIndex, int columnIndex) {

        return data.get(rowIndex)[columnIndex];

    }


@Override

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

        data.get(rowIndex)[columnIndex] = aValue;

        fireTableDataChanged();

    }


public void addRow(Object[] rowData) {

        int rowIndex = data.size();         

        data.add(rowData);

        fireTableRowsInserted(rowIndex, rowIndex);

    }

public void removeRow(int rowIndex) {

    data.remove(rowIndex);

    fireTableRowsDeleted(rowIndex, rowIndex);

    }


}


sábado, 4 de mayo de 2024

Como ejectuar programa java con modulos en consola

 Si necesitamos correr un programa java en la terminal con módulos esta es la forma.

 

Entramos al directorio del proyecto y hacemos lo siguiente:


java -cp bin: controlador.MiProgramaPrincipal


java: es la máquina de java

-cp: es diciéndole el directorio

bin: el directorio donde estan los archivos .class

controlador: es un directorio donde esta el ejecutable principal

MiProgramaPrincipal: es el módulo donde tenemos la clase main

debemos recordar que los archivos tienen que ser los .class según la siguiente imagen todo esto esta en el directorio SecretarioEjectuvioSud que es el directorio donde tenemos el proyecto:

.
├── bin
│   ├── controlador
│   │   ├── MiProgramaPrincipal.class
│   │   └── ControladorProcesos.class
│   ├── modelo
│   │   ├── Constantes.class
│   │   ├── ModeloTablaAnterior.class
│   │   ├── ModeloTabla.class
│   │   ├── Proceso.class
│   │   └── Tarea.class
│   ├── module-info.class
│   └── vista
│       ├── VentanaNombreLlamamiento.class
│       ├── VentanaPrincipal$OyenteVentana.class
│       ├── VentanaPrincipal$PanelPrincipal.class
│       └── VentanaPrincipal.class
├── build.xml
├── data.dat
├── data.txt
├── manifest.mf
└── secretarioejecutivosud

si en caso queremos crear un lanzador podemos hacer un archivo de texto aquí lo llamo secretarioejecutivo donde ira el comando mencionado anteriormente que es:

java -cp bin: controlador.MiProgramaPrincipal

podemos ver que en la casilla "Orden:" se llama al programa de texto con el comando anterior.