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 :

[JTable] Cellule contenant une JTable


Sujet :

Composants Java

  1. #1
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut [JTable] Cellule contenant une JTable
    Bon soir
    j'essaie de faire une Jtable qui contient des Jtable
    pour cela j'ai fais un petit code mais il me donne des résultats bizard

    voici le code, vous allez voir que la table qui doit être dans la second cellule n'est pas de taille prévue 2x2......



    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
    import java.awt.Component;
     
    import javax.swing.JFrame;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumn;
     
    public class MyTableCellRenderer extends JTable implements TableCellRenderer {
     
    	public MyTableCellRenderer() {
    		super(2, 2);
    	}
     
    	public Component getTableCellRendererComponent(JTable arg0, Object arg1,
    			boolean arg2, boolean arg3, int arg4, int arg5) {
    		return this;
    	}
     
    	public static void main(String[] args) {
    		JFrame jf = new JFrame();
    		JTable jt = new JTable(3, 2);
    		TableColumn col = jt.getColumnModel().getColumn(1);
    		col.setCellRenderer(new MyTableCellRenderer());
    		jf.add(jt);
    		jf.setVisible(true);
     
    	}
     
    }

  2. #2
    Membre confirmé Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 505
    Points
    505
    Par défaut
    Effectivement c'est au composant de s'adapter à la taille de la cellule et pas le contraire.
    Donc dans ton cas, je procéderais ainsi :
    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
     
    public static void main(String[] args) {
     
        MyTableCellRenderer renderer = new MyTableCellRenderer();
     
        JTable jt = new JTable(3, 2);
        jt.getColumnModel().getColumn(1).setCellRenderer(renderer);
        jt.setRowMargin(0);
        jt.setRowHeight(renderer.getPreferredSize().height);
     
        JFrame jf = new JFrame();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(jt);
        jf.pack();
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
    }

  3. #3
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    salut ngpub est ce q ue ca serais possible que vous me donner un peut plus d'explication a ce sujet, je veux dire le composant doit s'adapter.......mais j'affirme que ça marche la comme par magie, merci

  4. #4
    Membre confirmé Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Points : 505
    Points
    505
    Par défaut
    En fait il m'est arrivé de regarder le code et là on voit trucs comme ça :
    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
    private void paintCell(SynthContext context, Graphics g,
            Rectangle cellRect, int row, int column) {
        if (table.isEditing() && table.getEditingRow()==row &&
                                 table.getEditingColumn()==column) {
            Component component = table.getEditorComponent();
            component.setBounds(cellRect);
            component.validate();
        }
        else {
            TableCellRenderer renderer = table.getCellRenderer(row, column);
            Component component = table.prepareRenderer(renderer, row, column);
            rendererPane.paintComponent(g, component, table, cellRect.x,
                    cellRect.y, cellRect.width, cellRect.height, true);
        }
    }

  5. #5
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    je tombe sur cet exemple... je le lis... je le relis...

    et moi aussi je comprend pas comment ngpub a resolu le pb!

    qlq peux t'il m'expliquer?

  6. #6
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    ayé mea culpa!

    j'avais pas pigé le:jt.setRowHeight(renderer.getPreferredSize().height);

    sinon évidement la Jtable conteneur a la même hauteur de ligne que l'autre...

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

Discussions similaires

  1. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  2. Fusion de cellules pour une JTABLE
    Par niggaz972 dans le forum Composants
    Réponses: 10
    Dernier message: 30/07/2009, 17h13
  3. problème de couleur de cellule dans une JTable
    Par rprom1 dans le forum Composants
    Réponses: 3
    Dernier message: 04/04/2007, 00h01
  4. Surligner des cellules d'une JTable
    Par bfb dans le forum Composants
    Réponses: 1
    Dernier message: 06/01/2006, 18h53
  5. [JTable] Saut de ligne dans la cellule d'une JTable
    Par enocet dans le forum Composants
    Réponses: 3
    Dernier message: 15/12/2005, 13h16

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