Saltar al contenido

Cargar datos de arrayList en JTable

Después de mucho trabajar hemos hallado la contestación de este atolladero que algunos usuarios de nuestro sitio tienen. Si tienes algún dato que compartir no dudes en dejar tu comentario.

Solución:

“El problema es que no encuentro la forma de establecer un número fijo de filas”

No es necesario establecer el número de filas. Utilizar una TableModel. A DefaultTableModel en particular.

String col[] = "Pos","Team","P", "W", "L", "D", "MP", "GF", "GA", "GD";

DefaultTableModel tableModel = new DefaultTableModel(col, 0);
                                            // The 0 argument is number rows.

JTable table = new JTable(tableModel);

Luego puede agregar filas al tableModel con un Object[]

Object[] objs = 1, "Arsenal", 35, 11, 2, 2, 15, 30, 11, 19;

tableModel.addRow(objs);

Puede hacer un bucle para agregar su objeto[] matrices.

Nota: JTable actualmente no permite la creación de instancias con los datos de entrada como un ArrayList. Debe ser un Vector o un array.

Consulte JTable y DefaultTableModel. Además, tutorial de cómo usar JTable

“Creé una lista de matrices a partir de ella y de alguna manera no puedo encontrar una manera de almacenar esta información en una JTable”.

Puede hacer algo como esto para agregar los datos

ArrayList originalLeagueList = new ArrayList();

originalLeagueList.add(new FootballClub(1, "Arsenal", 35, 11, 2, 2, 15, 30, 11, 19));
originalLeagueList.add(new FootballClub(2, "Liverpool", 30, 9, 3, 3, 15, 34, 18, 16));
originalLeagueList.add(new FootballClub(3, "Chelsea", 30, 9, 2, 2, 15, 30, 11, 19));
originalLeagueList.add(new FootballClub(4, "Man City", 29, 9, 2, 4, 15, 41, 15, 26));
originalLeagueList.add(new FootballClub(5, "Everton", 28, 7, 1, 7, 15, 23, 14, 9));
originalLeagueList.add(new FootballClub(6, "Tottenham", 27, 8, 4, 3, 15, 15, 16, -1));
originalLeagueList.add(new FootballClub(7, "Newcastle", 26, 8, 5, 2, 15, 20, 21, -1));
originalLeagueList.add(new FootballClub(8, "Southampton", 23, 6, 4, 5, 15, 19, 14, 5));

for (int i = 0; i < originalLeagueList.size(); i++)
   int position = originalLeagueList.get(i).getPosition();
   String name = originalLeagueList.get(i).getName();
   int points = originalLeagueList.get(i).getPoinst();
   int wins = originalLeagueList.get(i).getWins();
   int defeats = originalLeagueList.get(i).getDefeats();
   int draws = originalLeagueList.get(i).getDraws();
   int totalMatches = originalLeagueList.get(i).getTotalMathces();
   int goalF = originalLeagueList.get(i).getGoalF();
   int goalA = originalLeagueList.get(i).getGoalA();
   in ttgoalD = originalLeagueList.get(i).getTtgoalD();

   Object[] data = position, name, points, wins, defeats, draws, 
                               totalMatches, goalF, goalA, ttgoalD;

   tableModel.add(data);


Probablemente necesite utilizar un TableModel (Tutorial de Oracle aquí)

Cómo implementa el tuyo TableModel

public class FootballClubTableModel extends AbstractTableModel 
  private List clubs ;
  private String[] columns ; 

  public FootBallClubTableModel(List aClubList)
    super();
    clubs = aClubList ;
    columns = new String[]"Pos","Team","P", "W", "L", "D", "MP", "GF", "GA", "GD";
  

  // Number of column of your table
  public int getColumnCount() 
    return columns.length ;
  

  // Number of row of your table
  public int getRowsCount() 
    return clubs.size();
  

  // The object to render in a cell
  public Object getValueAt(int row, int col) 
    FootballClub club = clubs.get(row);
    switch(col) 
      case 0: return club.getPosition();
      // to complete here...
      default: return null;
    
  

  // Optional, the name of your column
  public String getColumnName(int col) 
    return columns[col] ;
  


Quizás necesite anular otros métodos de TableModel, depende de lo que quieras hacer, pero aquí están los métodos esenciales para comprender e implementar 🙂
Úselo así

List clubs = getFootballClub();
TableModel model = new FootballClubTableModel(clubs);
JTable table = new JTable(model);

¡Espero que te ayude!

Creé un arrayList a partir de él y de alguna manera no puedo encontrar una manera de almacenar esta información en un JTable.

DefaultTableModel no admite la visualización de objetos personalizados almacenados en una ArrayList. Necesita crear un TableModel personalizado.

Puede consultar el modelo Bean Table. Es una clase reutilizable que usará la reflexión para encontrar todos los datos en su clase FootballClub y mostrarlos en una JTable.

O puede extender el Row Table Model que se encuentra en el enlace anterior para facilitar la creación de su propio TableModel personalizado mediante la implementación de algunos métodos. El JButtomTableModel.java El código fuente da un ejemplo completo de cómo puede hacer esto.

Valoraciones y reseñas

Si te ha resultado de utilidad este post, sería de mucha ayuda si lo compartieras con otros programadores y nos ayudes a dar difusión a este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *