Nouveau

Création d'une table Java à l'aide de JTable

Création d'une table Java à l'aide de JTable


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Java fournit une classe utile appelée JTable, qui vous permet de créer des tables lors du développement d'interfaces utilisateur graphiques à l'aide des composants de l'API Swing de Java. Vous pouvez permettre à vos utilisateurs de modifier les données ou simplement de les visualiser. Notez que la table ne contient pas réellement de données - c'est entièrement un mécanisme d'affichage.

Ce guide étape par étape montrera comment utiliser la classe.

JTable créer un tableau simple.

Remarque: Comme toute interface graphique Swing, vous devez créer un conteneur dans lequel afficher les

JTable . Si vous ne savez pas comment procéder, reportez-vous à la section Création d’une interface utilisateur graphique simple.

Utilisation de tableaux pour stocker les données de la table

Un moyen simple de fournir des données pour le

JTableLa classe est d'utiliser deux tableaux. Le premier contient les noms de colonne dans un

Chaînetableau:

String columnNames = {"Prénom", "Nom", "Pays"
, "Événement", "lieu", "heure", "record du monde"};

Le second tableau est un tableau d'objets à deux dimensions qui contient les données de la table. Ce tableau, par exemple, comprend six nageurs olympiques:

Données d'objet = {
{"César Cielo", "Filho", "Brésil", "50m nage libre", 1, "21.30", faux},
{"Amaury", "Leveaux", "France", "50m nage libre", 2, "21.45", faux},
{"Eamon", "Sullivan", "Australie", "100 m nage libre", 2, "47.32", faux},
{"Michael", "Phelps", "USA", "200m nage libre", 1, "1: 42.96", faux},
{"Ryan", "Lochte", "USA", "200 m dos", 1, "1: 53.94", vrai},
{"Hugues", "Duboscq", "France", "100 m brasse", 3, "59.37", faux}
};

La clé ici est de s’assurer que les deux tableaux ont le même nombre de colonnes.

Construire le JTable

Une fois les données en place, la création de la table est une tâche simple. Il suffit d'appeler le

JTableconstructeur et transmettez-lui les deux tableaux:

JTable table = new JTable (data, columnNames);

Vous voudrez probablement ajouter des barres de défilement pour vous assurer que l'utilisateur peut voir toutes les données. Pour ce faire, placez le

JTabledans une

JScrollPane:

JScrollPane tableScrollPane = new JScrollPane (table);

Maintenant, lorsque la table est affichée, vous verrez les colonnes et les lignes de données et aurez la possibilité de faire défiler de haut en bas.

L'objet JTable fournit un tableau interactif. Si vous double-cliquez sur l'une des cellules, vous pourrez éditer le contenu - bien que toute édition n'affecte que l'interface graphique, pas les données sous-jacentes. (Un écouteur d'événements doit être implémenté pour gérer le changement de données.).

Pour modifier la largeur des colonnes, placez la souris sur le bord d'un en-tête de colonne et faites-le glisser dans les deux sens. Pour modifier l'ordre des colonnes, cliquez sur un en-tête de colonne et maintenez-le enfoncé, puis faites-le glisser vers le nouvel emplacement.

Tri des colonnes

Pour ajouter la possibilité de trier les lignes, appelez le

setAutoCreateRowSorterméthode:

table.setAutoCreateRowSorter (true);

Lorsque cette méthode est définie sur true, vous pouvez cliquer sur un en-tête de colonne pour trier les lignes en fonction du contenu des cellules de cette colonne.

Changer l'apparence de la table

Pour contrôler la visibilité des lignes de la grille, utilisez la commande

setShowGridméthode:

table.setShowGrid (true);

Pour changer complètement la couleur du tableau, utilisez le

setBackgroundet

setGridColorméthodes:

table.setGridColor (Color.YELLOW);

table.setBackground (Color.CYAN);

Les largeurs de colonne du tableau sont égales par défaut. Si le conteneur dans lequel se trouve la table est redimensionnable, les largeurs des colonnes s’agrandissent et se rétrécissent et le conteneur grossit ou grossit. Si un utilisateur redimensionne la colonne, la largeur des colonnes à droite changera pour s'adapter à la nouvelle taille de colonne.

Les largeurs de colonne initiales peuvent être définies à l'aide de la méthode setPreferredWidth ou d'une colonne. Utilisez la classe TableColumn pour obtenir d'abord une référence à la colonne, puis la méthode setPreferredWidth pour définir la taille:

TableColumn eventColumn = table.getColumnModel (). GetColumn (3);

eventColumn.setPreferredWidth (150);

TableColumn placeColumn = table.getColumnModel (). GetColumn (4);

placeColumn.setPreferredWidth (5);

Sélection de rangées

Par défaut, l'utilisateur peut sélectionner les lignes du tableau de l'une des trois manières suivantes:

  • Pour sélectionner une seule ligne, sélectionnez une cellule de tableau dans cette ligne.
  • Pour sélectionner plusieurs lignes en continu, faites glisser la souris sur plusieurs lignes ou sélectionnez les cellules du tableau avec la cellule de décalage enfoncée.
  • Pour sélectionner plusieurs lignes non continues, sélectionnez des cellules de tableau tout en maintenant la touche enfoncée. clé de contrôle (touche de commande pour Mac).

Utiliser un modèle de table

L'utilisation de deux tableaux pour les données d'une table peut s'avérer utile si vous souhaitez une table simple, basée sur des chaînes, pouvant être modifiée. Si vous regardez le tableau de données que nous avons créé, il contient d'autres types de données que

Les cordes- le

Endroitla colonne contient

intset le

Record du mondela colonne contient

booléens. Pourtant, ces deux colonnes sont affichées sous forme de chaînes. Pour changer ce comportement, créez un modèle de table.

Un modèle de table gère les données à afficher dans la table. Pour implémenter un modèle de table, vous pouvez créer une classe qui étend la

AbstractTableModelclasse:

classe abstraite publique AbstractTableModel étend Object implémente TableModel, Serializable {

public int getRowCount ();

public int getColumnCount ();

objet public getValueAt (int row, int column);

public String getColumnName (int column;

public boolean isCellEditable (int rowIndex, int columnIndex);

Classe publique getColumnClass (int columnIndex);

}

Les six méthodes ci-dessus sont celles utilisées dans ce guide pas à pas, mais il existe plus de méthodes définies par le

AbstractTableModelclasse qui sont utiles pour manipuler les données dans un

JTableobjet. Lors de l'extension d'une classe pour utiliser le

AbstractTableModel, vous ne devez mettre en œuvre que le

getRowCount,

getColumnCountet

getValueAtméthodes.

Créez une nouvelle classe implémentant les cinq méthodes ci-dessus:

class ExampleTableModel étend AbstractTableModel {

String columnNames = {"Prénom", "Nom", "Pays"

, "Événement", "lieu", "heure", "record du monde"};

Données d'objet = {

{"César Cielo", "Filho", "Brésil", "50m nage libre", 1, "21.30", faux},

{"Amaury", "Leveaux", "France", "50m nage libre", 2, "21.45", faux},

{"Eamon", "Sullivan", "Australie", "100 m nage libre", 2, "47.32", faux},

{"Michael", "Phelps", "USA", "200m nage libre", 1, "1: 42.96", faux},

{"Larsen", "Jensen", "USA", "400 m nage libre", 3, "3: 42.78", faux},

};

@Passer outre

public int getRowCount ()

{

return data.length;

}

@Passer outre

public int getColumnCount ()

{

return columnNames.length;

}

@Passer outre

Objet public getValueAt (int row, int column)

{

return datarowcolumn;

}

@Passer outre

public String getColumnName (int column) {

return columnNamescolumn;

}@Passer outre

Classe publique getColumnClass (int c) {

retourne getValueAt (0, c) .getClass ();

}@Passer outre

public boolean isCellEditable (int row, int column)

{

if (column == 1 || column == 2)

{

retourne faux;

}

autre

{

retourne vrai;

}

}

}

Dans cet exemple, cela a du sens pour le

ExampleTableModelclasse pour contenir les deux chaînes contenant les données de la table. Puis le

getRowCount, 

getColumnCount,

getValueAtet

getColumnNameles méthodes peuvent utiliser les tableaux pour fournir les valeurs de la table. Notez également comment le

isCellEditableUne méthode a été écrite pour interdire la modification des deux premières colonnes.

Au lieu d’utiliser les deux tableaux pour créer le

JTableobjet, on peut utiliser le

ExampleTableModelclasse:

JTable table = new JTable (new ExampleTableModel ());

Lorsque le code est exécuté, vous verrez que le

JTableobject utilise le modèle de table car aucune des cellules de la table n'est modifiable et les noms de colonne sont utilisés correctement. Si la

getColumnNameSi la méthode n’avait pas été implémentée, les noms de colonne de la table s’affichent comme noms par défaut de A, B, C, D, etc.

Considérons maintenant la méthode

getColumnClass. Cela seul fait que le modèle de table vaille la peine d'être implémenté car il fournit la

JTableobjet avec le type de données contenu dans chaque colonne. Si vous vous en souvenez, le tableau de données d'objet a deux colonnes qui ne sont pas

Chaînetypes de données: le

Endroitcolonne qui contient ints, et le

Record du mondecolonne qui contient

booléens. Connaître ces types de données modifie la fonctionnalité fournie par le

JTableobjet pour ces colonnes. L'exécution de l'exemple de code de table avec le modèle de table implémenté signifie que

Record du mondeLa colonne sera en fait une série de cases à cocher.

Ajout d'un éditeur de ComboBox

Vous pouvez définir des éditeurs personnalisés pour les cellules du tableau. Par exemple, vous pouvez faire d'une liste déroulante une alternative à l'édition de texte standard pour un champ.

Voici un exemple d'utilisation

JComboBoxle champ pays:

String countries = {"Australie", "Brésil", "Canada", "Chine"
, "France", "Japon", "Norvège", "Russie", "Corée du Sud"
, "Tunisie", "USA"};
JComboBox countryCombo = new JComboBox (pays);

Pour définir l’éditeur par défaut pour la colonne pays, utilisez la commande

TableColonneclasse pour obtenir une référence à la colonne pays, et le

setCellEditorméthode pour définir le

JComboBoxen tant qu'éditeur de cellule:

TableColumn countryColumn = table.getColumnModel (). GetColumn (2);
countryColumn.setCellEditor (nouvelle valeur DefaultCellEditor (countryCombo));



Commentaires:

  1. Pyn

    Avant de commencer votre recherche d'emploi, lisez les recommandations des employés sur leurs lieux de travail sur notre ressource. Et alors seulement décidez d'offrir votre proposition à telle ou à cette entreprise. Consultez les différentes recommandations et faites le bon choix.

  2. Geoff

    Excusez-moi de ne pas pouvoir participer aux discussions maintenant - il n'y a pas de temps libre. Mais je serai libéré - j'écrirai certainement ce que je pense sur cette question.

  3. Taugis

    Merci beaucoup pour l'explication, maintenant je sais.

  4. Nigrel

    La honte et la honte!



Écrire un message