IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Tableau éditable avec Swing


Sujet :

Composants Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Par défaut Tableau éditable avec Swing
    Bonjour tout l monde,
    Dans mon projet java, je dois réaliser une interface utilisateur à partir de la quelle l'utilisateur doit entrer les données sous forme d'une matrice. cette matrice ressemble à celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[][] data={
    				        {"","R1","R2","R3","R4","R5"},
    				        {"P1","1","2","0","0","0"},
    				        {"P2","2","0","1","1","1"},
    				        {"P3","0","0","0","2","1"},
    				        {"P4","0","1","0","0","2"},
    				        {"P5","0","0","1","0","0"}, 
    				          };
    les Ri en première ligne et les Pj en première colonne.

    Je voulais savoir s'il est possible d'utiliser un tablaut éditable pour entrer cette matrice?? quelle est l'objet le plus approprié sachant que l'utilisateur doit entrer au préalable le nombre de ligne et le nombre de colonne ( qui correspondent au nombre des Pi et au nombre des RI) de cette matrice?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 171
    Par défaut
    si j'été vous j'aurais utiliser un JTable

    voila le constructeur JTable(Object [][] obj, String [] titre)

    ou obj c'est votre matrice, et titre c'est le titre du tableau

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si on veut contrôler un peu mieux les données, il faut se faire son propre modèle. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    class MatriceTableModel extends AbstractTableModel {
     
    	/**
             * La structure qui contiendra les données. Cela peut être un tableau ou une
             * List d'objet ou n'importe quel autre type de structure selon notre
             * besoin...
             */
    	private final int[][] matrice;
     
    	/**
             * Création d'une matrice carré
             */
    	public MatriceTableModel(int size) {
    		this(size, size);
    	}
     
    	/**
             * Création d'une matrice
             */
    	public MatriceTableModel(int width, int height) {
    		this.matrice = new int[width][height];
    	}
     
    	/**
             * Retourne le nombre de ligne :
             */
    	@Override
    	public int getRowCount() {
    		return matrice.length;
    	}
     
    	/**
             * Retourne le nombre de colonne :
             */
    	@Override
    	public int getColumnCount() {
    		return matrice[0].length;
    	}
     
    	/**
             * Retourne le nom de la colonne
             */
    	@Override
    	public String getColumnName(int column) {
    		return "R" + column;
    	}
     
    	/**
             * Retourne le type des objets selon la colonne (ici on n'a que des
             * Integer). Permet à la JTable de déterminer le renderer et l'editor
             */
    	@Override
    	public Class<?> getColumnClass(int columnIndex) {
    		return Integer.class;
    	}
     
    	/**
             * Indique si la cellule est éditable ou pas.
             */
    	@Override
    	public boolean isCellEditable(int rowIndex, int columnIndex) {
    		return true;
    	}
     
    	/**
             * Retourne la valeur d'une cellule
             */
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		return this.matrice[rowIndex][columnIndex];
    	}
     
    	/**
             * Modifie la valeur d'une cellule
             */
    	@Override
    	public void setValueAt(Object value, int rowIndex, int columnIndex) {
    		if (value instanceof Number) {
    			Number number = (Number) value;
    			this.matrice[rowIndex][columnIndex] = number.intValue();
    			// Ceci permet de signaler le changement aux listeners :
    			fireTableCellUpdated(rowIndex, columnIndex);
    		}
    	}
    }
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		// On crée le modèle de données :
    		MatriceTableModel model = new MatriceTableModel(5);
    		// On créee la JTable :
    		JTable table = new JTable(model);
    		// Que l'on met dans un JScrollPane :
    		JScrollPane scrollPane = new JScrollPane(table);
    		scrollPane.setPreferredSize(new Dimension(200, 200));
     
    		// On affiche le tout
    		JOptionPane.showMessageDialog(null, scrollPane);
    Par contre pour le header de ligne ne sont pas géré en standard... mais il doit y avoir une solution pour les afficher correctement...


    a++

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 17
    Par défaut
    Merci beaucoup pour votre aide, je vais essayer de créer mon propre model de table.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. générer un tableau dans le mode graphique avec swing..
    Par BrightStar dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 07/05/2014, 13h35
  2. Tableau éditable avec ajout à la base de données
    Par W.ided123 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 30/04/2014, 11h23
  3. Problèmes d'affichage de tableau d'objets avec swing
    Par amine1980 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 04/04/2011, 23h57
  4. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35
  5. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo