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 :

Afficher JTable verticalement


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut Afficher JTable verticalement
    Bonjour
    J'ai mon bout de code suivant qui affiche un tableau ayant 2 lignes et 3 colonnes.La 1ere ligne contient les titres,et la 2nde,les données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Object[][] data = {	
    	        		{e.getIdEtud(), e.getNom(), e.getPrenom()} 
    	        		};
     
    	        String  title[] = {"Numéro", "Nom", "Prénom"};
    	        JTable tableau = new JTable(data,title);
    			tableau.setLayout(null);
    			tableau.setBounds(0, 0, 140, 175);
     
     
    			js = new JScrollPane(tableau);
    			js.setPreferredSize(new Dimension(300,100)););
    Donc je voudrais afficher le tableau verticalement c'est à dire que les 2 lignes vont se transformer en colonne, une colonne pour le titre et une autre pour les données.
    Merci

  2. #2
    Membre expérimenté Avatar de uhrand
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 203
    Par défaut
    Essaie ceci:
    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
            Object[][] data = {
                {e.getIdEtud()},
                {e.getPrenom()},
                {e.getNom()}
            };
            String title[] = new String[data[0].length];
            for (int i = 0; i < title.length; i++) {
                title[i] = "";
            }
            JTable tableau = new JTable(data, title);
    //        tableau.setLayout(null);
    //        tableau.setBounds(0, 0, 140, 175);
            js = new JScrollPane(tableau);
            js.setPreferredSize(new Dimension(300, 100));
            add(js);
     
            JTable rowTable = new RowHeader(tableau, new String[]{" Numéro", " Nom", " Prénom"}, 80);
            js.setRowHeaderView(rowTable);
            js.setCorner(JScrollPane.UPPER_LEFT_CORNER, rowTable.getTableHeader());
    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    import java.awt.*;
    import java.beans.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.table.*;
     
    /*
     *  Use a JTable as a renderer for row header of a given main table.
     *  This table must be added to the row header of the scrollpane that
     *  contains the main table.
     */
    public class RowHeader extends JTable implements ChangeListener, PropertyChangeListener {
     
        private JTable main;
        private String title[];
     
        public RowHeader(JTable table, String[] title, int headerWidth) {
            main = table;
            this.title = title;
            main.addPropertyChangeListener(this);
            setFocusable(false);
            setAutoCreateColumnsFromModel(false);
            setModel(main.getModel());
            setSelectionModel(main.getSelectionModel());
            TableColumn column = new TableColumn();
            column.setHeaderValue(" ");
            addColumn(column);
            column.setCellRenderer(new RowHeaderRenderer());
            getColumnModel().getColumn(0).setPreferredWidth(headerWidth);
            setPreferredScrollableViewportSize(getPreferredSize());
            main.setTableHeader(null);
        }
     
        @Override
        public void addNotify() {
            super.addNotify();
            Component c = getParent();
            //  Keep scrolling of the row table in sync with the main table.
            if (c instanceof JViewport) {
                JViewport viewport = (JViewport) c;
                viewport.addChangeListener(this);
            }
        }
     
        @Override
        public int getRowCount() {
            return title.length;
        }
     
        /*
         *  Delegate method to main table
         */
        @Override
        public int getRowHeight(int row) {
            return main.getRowHeight(row);
        }
     
        /*
         *  This table does not use any data from the main TableModel,
         *  so just return a value based on the row parameter.
         */
        @Override
        public Object getValueAt(int row, int column) {
            return title[row];
        }
     
        /*
         *  Don't edit data in the main TableModel by mistake
         */
        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
     
    //
    //  Implement the ChangeListener
    //
        public void stateChanged(ChangeEvent e) {
            //  Keep the scrolling of the row table in sync with main table
            JViewport viewport = (JViewport) e.getSource();
            JScrollPane scrollPane = (JScrollPane) viewport.getParent();
            scrollPane.getVerticalScrollBar().setValue(viewport.getViewPosition().y);
        }
     
    //
    //  Implement the PropertyChangeListener
    //
        public void propertyChange(PropertyChangeEvent e) {
            //  Keep the row table in sync with the main table
     
            if ("selectionModel".equals(e.getPropertyName())) {
                setSelectionModel(main.getSelectionModel());
            }
     
            if ("model".equals(e.getPropertyName())) {
                setModel(main.getModel());
            }
        }
     
        private static class RowHeaderRenderer extends DefaultTableCellRenderer {
     
            public RowHeaderRenderer() {
                setHorizontalAlignment(JLabel.LEFT);
            }
     
            @Override
            public Component getTableCellRendererComponent(
                    JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                if (table != null) {
                    JTableHeader header = table.getTableHeader();
     
                    if (header != null) {
                        setForeground(header.getForeground());
                        setBackground(header.getBackground());
                        setFont(header.getFont());
                    }
                }
                if (isSelected) {
                    setFont(getFont().deriveFont(Font.BOLD));
                }
                setText((value == null) ? "" : value.toString());
                setBorder(UIManager.getBorder("TableHeader.cellBorder"));
                return this;
            }
        }
    }

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Wouuuuuuuuh,ça marche,merci infiniment.
    Mais je dois avouer que je ne pensais pas que ça serait aussi long.
    Encore merci

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

Discussions similaires

  1. Afficher champ verticalement
    Par rosert dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 07/12/2012, 10h20
  2. Rempli et Afficher Jtable A Partir D'une Requete
    Par the watcher dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 04/05/2010, 12h08
  3. Afficher Jtable avec arraylist personaliser
    Par bob3333 dans le forum Composants
    Réponses: 5
    Dernier message: 04/03/2010, 11h17
  4. afficher JTable quand selectionne JComboBox
    Par claire13 dans le forum Composants
    Réponses: 2
    Dernier message: 24/04/2008, 16h11
  5. [JTable] Comment ne pas afficher les titres ?
    Par FabienBxl dans le forum Composants
    Réponses: 3
    Dernier message: 08/10/2003, 16h01

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