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);
 
 
	}
 
 
}