Bonjour,
Je souhaiterais afficher n Jtables dans n onglets.
chaque onglet aura son tableau et chaque tableau est indépendant !!
Merci.
Version imprimable
Bonjour,
Je souhaiterais afficher n Jtables dans n onglets.
chaque onglet aura son tableau et chaque tableau est indépendant !!
Merci.
Bonjour,
Va voir les tutos du site sur les JTables ou les nombreux posts à ce sujet.
Tout ceci est accessible via une petite recherche que je te laisse faire.
De rien.
Et les JTabbedPane à priori aussi, pour les onglets.
voici ce que j'ai réalisé mais le problème c'est que j'ai le meme tableau dans chaque onglet
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 JTabbedpane tab=new JTabbedPane(); for(int i=0;i<5;i++) { JTable matable=new JTable(); JPanel panneau =new JPanel(); panneau.add(matable); tab.addTab("",panneau); } add(tab);
Ça parait logique non?
Tu as 5 JTable identiques (vide) sur 5 Panel identiques...
En quoi les voudrais tu différentes, si ce n'est les données dedans?
car si je modifie les valeurs dans un onglet, cela se répercute sur les autres onglets
On aimerais un peu plus de code!
comment créer n JTables différentes dans le sens instances différentes
il n'y a pas de possibilité de le faire dans une boucle puisque je saisit la valeur de n qui se trouve être le nombre de tables?
Si, mais il faut stocker ces JTable dans une List ou un tableau dans ce cas là.
Java ne permet pas de créer de noms de variables dynamiquement vu que c'est un langage compilé et non interprété.
java est un langage compilé et interprété
En fait il est compilé deux fois (cf la notion de compilateur JIT autrement appelé Compilation à la volée ). La JVM n'est pas vraiment un interpréteur au sens du terme.
De toute façon la première compilation empêche l'emploi de noms de variables dynamiques
Voici ce que j'ai réalisé mais toujours le meme problème:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 List<JTable> ensembleTable=new ArrayList<JTable>; for(int i =0;i <nombre; i++) { JTable matable=new JTable(valeur,colonne); JPanel panneau =new JPanel(); ensembleTable.add(matable); panneau.add(ensembleTable.get(i)); tab.addTab("",panneau); } add(tab);
Tu crées un container TabbedPane et dans chaque TabbedPane, tu ajoutes un Panel qui va containir un JTable.
voici un exemple simple de création de JTable: http://sakoba.byethost13.com/2010/11...ng-with-table/
Voici ce que j'ai réalisé mais cela ne fonctionne pas
Code:
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 public class Client extends JPanel implements ActionListener { JLabel montexte1 = new JLabel(); JLabel montexte2 = new JLabel(); JTextField champ1 = new JTextField(), champ2 = new JTextField(); JTable matable; JCheckBox premier_choix, deuxieme_choix, troisieme_choix; JPanel panneau1 = new JPanel(), panneau2 = new JPanel(), panneau3 = new JPanel(), panneau4 = new JPanel(); static int nb_lignes; static int nb_colonnes; static int dimension; JLabel mavaleur = new JLabel(); JButton valider = new JButton(); JTabbedPane tabbedpane = new JTabbedPane(); public Client2() { } public Client2(int nb_lignes, int nb_colonnes, int dimension) { System.out.println("" + nb_lignes); this.nb_lignes = nb_lignes; this.nb_colonnes = nb_colonnes; this.dimension = dimension; setLayout(new BorderLayout()); List<JTable> ensembleTable = new ArrayList<JTable>(); Object[][] valeur=new Object[][] (); String[] column_num = new String[nb_colonnes]; for (int i = 1; i <= dimension; i++) { matable = new JTable(valeur, column_num); ensembleTable.add(matable); JPanel paneldimension = new JPanel(); paneldimension.setLayout(new BorderLayout()); paneldimension.add(ensembleTable.get(i - 1), BorderLayout.NORTH); tabbedpane.addTab("dimension n°" + i, paneldimension); } add(tabbedpane, BorderLayout.NORTH); } public void main(String[] args) { System.out.println("Main"); } }
Le comportement est normal.
Voici le source du constructeur de JTable que tu utilises :
Les données passées en paramètres ne sont pas copiées, mais utilisées directement. Donc une modification sur les données du tableau transmis en paramètre va modifier toutes les tables.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 public JTable(final Object[][] rowData, final Object[] columnNames) { this(new AbstractTableModel() { public String getColumnName(int column) { return columnNames[column].toString(); } public int getRowCount() { return rowData.length; } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int row, int col) { return rowData[row][col]; } public boolean isCellEditable(int row, int column) { return true; } public void setValueAt(Object value, int row, int col) { rowData[row][col] = value; fireTableCellUpdated(row, col); } }); }
Une solution possible : tu transmets un clone du tableau de données au lieu de l'original.
Voici ce que j'ai fait mais toujours le même problème:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 matable = new JTable(valeur.clone(), column_num); for (int i = 1; i <= dimension; i++) { ensembleValeurs.add(valeur); ensembleTable.add(matable); panel.add(ensembleTable.get(i - 1)); paneldimension.add(panel); tabbedpane.addTab("dimension n°" + i,paneldimension.get(i - 1)); ensembletabbedpane.add(tabbedpane); } add(tabbedpane);
http://img35.imageshack.us/img35/4169/framefn.png