java.lang.IllegalStateException: Attempt to mutate in notification
salut tout le monde,
j'ai un JPanel qui contient 17 JtextField (c'est pour un logiciel de comptablité) et le contenu de quelques JTextField dépends du contenu des autres, c'est à dire si je fais un changement dans un JtextField, le contenu d'autres va être changer, pour cette raison j'ai utilisé la classe DocumentListener, voici à peu prés le squette de mon code:
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| public class Location extends JPanel {
//declaration des variables
public Location() {
//ajout des composant à mon JPanel
calculer();
AjouterEvt(Location.this);
}
public void AjouterEvt(JPanel p) {
for (Component c : p.getComponents()) {
if (c instanceof JPanel) {
AjouterEvt((JPanel) c);
// System.out.println(((JPanel) c).getWidth());
} else {
if (c instanceof JTextField) {
((JTextField) c).getDocument().addDocumentListener(
new Ecouteurs());
}
}
}
}
public void calculer() {
textField_2.setText("");
double duree = contenu(textField) * contenu(textField_1);
System.out.println(duree);
textField_2.setText("" + duree);
tfTva.setText("" + contenu(tfTotal2) * 0.17);
tf75.setText("" + contenu(tfTrav) * 3000);
tfTimbres.setText("" + contenu(tfPages) * 2 * 20);
double total1 = contenu(tfEnreg) + contenu(tfTimbres)
+ contenu(tfConserv) + contenu(tfTva);
tfTotal1.setText("" + total1);
double total2 = contenu(tfNotaire) + contenu(tf22) + contenu(tf78)
+ contenu(tf79) + contenu(tf75);
tfTotal2.setText("" + total2);
double total = total1 + total2;
tfTotal.setText("" + total);
}
public double contenu(JTextField t) {
double contenu;
if (t.getText().equals(""))
contenu = 0;
else
contenu = Double.parseDouble(t.getText());
return contenu;
}
class Ecouteurs implements DocumentListener {
@Override
public void changedUpdate(DocumentEvent e) {
calculer();
}
@Override
public void insertUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
calculer();
}
@Override
public void removeUpdate(DocumentEvent e) {
// TODO Auto-generated method stub
calculer();
}
}
} |
si je fais un chagement dans un de mes JTextField il m'affiche l'exception suivante:
Code:
1 2
|
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Attempt to mutate in notification |
Merci d'avance