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

 Java Discussion :

JTable avec cellules carrées et cliquables (via JButton avec actionlistener)


Sujet :

Java

  1. #1
    Futur Membre du Club Avatar de SwyZe
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut JTable avec cellules carrées et cliquables (via JButton avec actionlistener)
    Bonjour,
    Après avoir longuement essayé, je n'arrive toujours pas à créer une JTable avec des cellules carrées... J'ai des cellules rectangulaires, qui sont trois fois plus large que haute...
    De plus, j'aimerais que les cellules soient cliquables (pour que la couleur change lorsque l'on clique sur une cellule), mais je ne sais pas si le mieux est d'utiliser un JButton ou autre chose ?

    Merci d'avance de votre aide !

  2. #2
    Futur Membre du Club Avatar de SwyZe
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Voici le code de mes deux classes dans lesquelles intervient la JTable :

    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
    package Modele;
     
    import javax.swing.JButton;
    import javax.swing.table.DefaultTableModel;
     
    public class ModeleTable extends DefaultTableModel {
     
    	public ModeleTable(Damier parDamier) {
     
    		Damier chDamier = parDamier;
     
    		setRowCount(parDamier.getNbLignes());
    		setColumnCount(parDamier.getNbColonnes());
     
    		for (int i=0; i<parDamier.getNbLignes(); i++) {
    			for (int j=0; j<parDamier.getNbColonnes(); j++) {
    				this.setValueAt(chDamier.getEtat(i, j), i, j);
    			}
    		}
    	}
     
    	public Class getColumnClass(int parColonne){
    		return boolean.class;
    	}
    }

    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
    package Vue;
     
    import java.awt.*;
     
    import javax.swing.*;
     
    import Modele.*;
     
    public class PanelCentre extends JPanel {
     
    	JTable chTable;
    	ModeleTable chModelTable;
    	/**
             * Default constructor
             */
    	public PanelCentre() {
    		chModelTable = new ModeleTable(new Damier());
    		chTable = new JTable(chModelTable);
    		chTable.getTableHeader().setReorderingAllowed(false);
    		chTable.setDefaultRenderer(boolean.class, new CelluleRenderer());
    		//chTable.setPreferredSize(new Dimension(1000,100));
    		add(chTable);
    	}
     
    	public void setAffichage(Damier parDamier) {
    		chTable.setModel(new ModeleTable(parDamier));
    	}
     
    }

    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
    package Vue;
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.*;
     
    import javax.swing.table.TableCellRenderer;
    import Modele.*;
     
    public class CelluleRenderer extends JButton implements TableCellRenderer {
     
     
    	public Component getTableCellRendererComponent(JTable parTable, Object parObj,
    			boolean estSelectionne, boolean aLeFocus, int parL, int parC) {
    		boolean chEtat = (boolean) parObj;
     
    		setPreferredSize(new Dimension(1,1));
     
    		//parTable.setRowHeight(20);
    		//parTable.setRowHeight(0, 10);
    		//parTable.getColumnModel().getColumn(parL).setWidth(10);
    		//parTable.getColumnModel().getColumn(0).setWidth(10);
    		//parTable.getColumnModel().getColumn(parC).setWidth(10);
     
    		setText("test");
     
    		if(chEtat) {
    			setBackground(Color.GREEN);	
    		}
     
    		else {
    			setBackground(Color.RED);
    		}
     
     
    		return this;
    	}
     
     
     
    }

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 980
    Points
    7 980
    Par défaut
    Essaye ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		TableColumn column;
     
    		table.setRowHeight(10);
     
    		for (int k = 1; k < table.getColumnCount(); ++k)
    		{
    			column = table.getColumnModel().getColumn(k);
    			column.setWidth(10);
    			column.setMaxWidth(10);
    			column.setResizable(false);
    		}
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Modification cellule d'une JTable avec un JButton externe
    Par pharsales dans le forum Langage
    Réponses: 0
    Dernier message: 22/03/2012, 10h41
  2. Jtable avec Spiner comme Rendu de cellule
    Par coolanso dans le forum Composants
    Réponses: 3
    Dernier message: 14/04/2011, 16h51
  3. cellule Jtable avec Jcombobox
    Par mina86 dans le forum Composants
    Réponses: 2
    Dernier message: 11/08/2008, 16h18
  4. jtable avec cellule modifiable lors du clic souris
    Par ASSOUMA2007 dans le forum Composants
    Réponses: 1
    Dernier message: 24/03/2007, 16h46
  5. JTable avec des JPanel dans les cellule
    Par pigpen dans le forum Composants
    Réponses: 11
    Dernier message: 13/04/2006, 19h58

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