Bonjour,
je sollicite un coups de mains car je bloque depuis plusieurs jours et je ne trouve pas la source de mon problème.
La classe affiche un tableau vide correspondant a une matrice carrée "lanceur.matrice" de taille "lanceur.taille" (qui sont des variables statique de la classe lanceur).
Je souhaite éditer les valeurs des cases pour remplir ma matrice.
J'ai créé un modele avec AbstractTableModel
et défini isCellEditable et setValueAt.
Le problème : quand je saisi une valeur dans le tableau et que je valide, l'enregistrement ne se fait pas.
Auriez vous des pistes que je pourrais explorer ?
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 import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class fenetresaisie extends JFrame { JFrame fenetre = new JFrame(); JPanel contenu = new JPanel(); fenetresaisie() { //parametre de la fenetre fenetre.setTitle("Projet 6"); fenetre.setSize(500,300); fenetre.setLocationRelativeTo(null); fenetre.setResizable(true); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //affectation d'un gestionnaire de disposition GridLayout disposition = new GridLayout(2,2); contenu.setLayout(disposition); //creation d'untableau des entetes Integer[] entete = new Integer[lanceur.taille]; for(int i=0; i<lanceur.taille; i++){ entete[i] = i; } //affichage du tableau JTable tableau = new JTable(new modeletab(lanceur.matrice, entete)); //TEST modif données tableau.setValueAt(4,1,1); contenu.add(new JScrollPane(tableau)); //TEST bricole pour affichage JButton valider = new JButton("OK"); affich gogo = new affich(); valider.addActionListener(gogo); contenu.add(valider); //y ajouter le contenu et le rendre visible fenetre.setContentPane(contenu); fenetre.setVisible(true); } } class affich implements ActionListener { public void actionPerformed(ActionEvent evenement){ for(int X=0; X<lanceur.taille; X++){ for(int Y=0; Y<lanceur.taille; Y++){ System.out.print("|"+lanceur.matrice[X][Y]+"|"); } System.out.print("\n"); } } } //classe modele personalisée class modeletab extends AbstractTableModel { private Integer[][] donnee; private Integer[] titre; public modeletab(Integer[][] donnee , Integer[] titre){ this.donnee = donnee; this.titre = titre; } public int getRowCount() { return this.donnee.length; } public int getColumnCount() { return this.titre.length; } public Integer getValueAt(int row, int col){ return this.donnee[row][col]; } public boolean isCellEditable(int row, int col){ return true; } public void setValueAt(Integer val,int row, int col){ lanceur.matrice[row][col]= val; fireTableCellUpdated(row,col); } }
Partager