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

AWT/Swing Java Discussion :

créer un composant multi composants


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut créer un composant multi composants
    Bonjour,

    J'ai besoin de créer un composant contenant plusieurs composants.

    Je le fais à partir de l'exemple : http://www.codeguru.com/java/articles/128.shtml qui fonction pour un JFrame.

    J'ai donc changer l'heritage JFrame en Jcomponent et modifié quelques trucs.

    Est ce la bonne demarche ?
    Cela ne fonctionne pas, il me manque la partie scrollable.
    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
    package hotelbb.communs.framework.ihm;
     
    import java.awt.BorderLayout;
    import java.awt.Graphics;
     
    import javax.swing.JComponent;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JViewport;
    import javax.swing.ListSelectionModel;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.table.AbstractTableModel;
     
    public class JTableFixedColumn extends JComponent {
     
    	Object[][] data;
    	Object[] column;
    	JTable fixedTable,table;
    	JScrollPane scroll;
        JViewport viewport;
     
    	public JTableFixedColumn() {
    	    super( );
    	    //setSize( 400, 150 );
     
    	    data =  new Object[][]{
    	        {"1","11","A","","","","",""},
    	        {"2","22","","B","","","",""},
    	        {"3","33","","","C","","",""},
    	        {"4","44","","","","D","",""},
    	        {"5","55","","","","","E",""},
    	        {"6","66","","","","","","F"}};
    	    column = new Object[]{"fixed 1","fixed 2","a","b","c","d","e","f"};
     
    	    AbstractTableModel fixedModel = new AbstractTableModel() {
    	      public int getColumnCount() { return 2; }
    	      public int getRowCount() { return data.length; }
    	      public String getColumnName(int col) {
    	       return (String)column[col]; 
    	      }
    	      public Object getValueAt(int row, int col) { 
    	        return data[row][col]; 
    	      }
    	    };
    	    AbstractTableModel    model = new AbstractTableModel() {
    	      public int getColumnCount() { return column.length -2; }
    	      public int getRowCount() { return data.length; }
    	      public String getColumnName(int col) {
    	       return (String)column[col +2]; 
    	      }
    	      public Object getValueAt(int row, int col) { 
    	        return data[row][col+2]; 
    	      }
    	      public void setValueAt(Object obj, int row, int col) { 
    	        data[row][col +2] = obj; 
    	      }
    	      public boolean CellEditable(int row, int col) { 
    	        return true; 
    	      }
    	    };
     
    	    fixedTable = new JTable( fixedModel ) {
    	      public void valueChanged(ListSelectionEvent e) {
    	        super.valueChanged(e);
    	        checkSelection(true); 
    	      }
    	    };
    	    table = new JTable( model ) {
    	      public void valueChanged(ListSelectionEvent e) {
    	        super.valueChanged(e);
    	        checkSelection(false); 
    	      }
    	    };
    	    fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    	    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    	    fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    	    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     
    	    scroll = new JScrollPane( table );
    	    viewport = new JViewport();
    	    viewport.setView(fixedTable);
    	    viewport.setPreferredSize(fixedTable.getPreferredSize());
    	    scroll.setRowHeaderView(viewport);
    	    scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER,fixedTable.getTableHeader());
     
    	    add(scroll,BorderLayout.CENTER);
    	  }
     
    	  private void checkSelection(boolean isFixedTable) {
    	    int fixedSelectedIndex = fixedTable.getSelectedRow();
    	    int      selectedIndex = table.getSelectedRow();
    	    if (fixedSelectedIndex != selectedIndex) {
    	      if (isFixedTable) {
    	        table.setRowSelectionInterval(fixedSelectedIndex,fixedSelectedIndex);
    	      } else {
    	        fixedTable.setRowSelectionInterval(selectedIndex,selectedIndex);
    	      }
    	    }
    	  }
     
    	protected void paintComponent(Graphics arg0) {
     
    		viewport.paintComponents(arg0);
    		scroll.paintComponents(arg0);
    		super.paintComponent(arg0);
     
     
    	}
     
     
    }

  2. #2
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    j'avais pas vu dans la faq la solution

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2010, 14h25
  2. Composants multi links ?
    Par doc malkovich dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 02/02/2010, 15h26
  3. Créer un mail sans composants
    Par [Silk] dans le forum Composants VCL
    Réponses: 7
    Dernier message: 12/09/2005, 17h07
  4. Créer un événement à mon composant
    Par natie_49 dans le forum Composants VCL
    Réponses: 12
    Dernier message: 22/06/2005, 11h01
  5. Créer et initialiser un composant TStatusBar :help:
    Par James_ dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/08/2003, 08h52

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