Bonsoir,

J'aurais besoin d'un regard extérieur car mon résultat ne s'affiche pas dans mon JLabel, j'ai du raté quelque chose, merci du coup de main..

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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
public static void main(String[] args) {
		JFrame frame = new JFrame("Calculateur de remboursement"); // nom de la frame
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
		JPanel panel = new JPanel(new GridBagLayout());
 
		Insets insets = new Insets(5,5,5,5); //Espacement des JTextField
		GridBagConstraints constraintsLabel = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.BASELINE_TRAILING, GridBagConstraints.NONE, insets, 0, 0);
		GridBagConstraints constraintsField = new GridBagConstraints(1, 0, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, insets, 0, 0);
 
		String[] labels = {"Quel est le montant de l'emprunt ? ", "Quel est le taux d'interêt ? ", "Nombre d'années de remboursement ? ", "Vos remboursements mensuels se montent à: "};
		for(String label : labels) {
			panel.add(new JLabel(label), constraintsLabel);
			constraintsLabel.gridy++;
		}
		// case 1
		JTextField montantField = new JTextField();
		panel.add(montantField, constraintsField);
		constraintsField.gridy++;
 
        // case 2
		JTextField tauxField = new JTextField();
		panel.add(tauxField, constraintsField);
		constraintsField.gridy++;
 
		// case 3
		JTextField nbreAnneeField = new JTextField();
		panel.add(nbreAnneeField, constraintsField);
		constraintsField.gridy++;
 
        // case résultat
		JLabel resultatLabel = new JLabel("");
		panel.add(resultatLabel, constraintsField);
		constraintsField.gridy++;
 
		DocumentListener documentListener = new DocumentListener() {
 
			@Override
			public void removeUpdate(DocumentEvent e) {
				update(montantField,tauxField,nbreAnneeField,resultatLabel);
			}
 
			@Override
			public void insertUpdate(DocumentEvent e) {
				update(montantField,tauxField,nbreAnneeField,resultatLabel);
			}
 
			@Override
			public void changedUpdate(DocumentEvent e) {
				update(montantField,tauxField,nbreAnneeField,resultatLabel);
			}
 
		};
		montantField.getDocument().addDocumentListener(documentListener);
		tauxField.getDocument().addDocumentListener(documentListener);
		nbreAnneeField.addActionListener(e->update(montantField,tauxField,nbreAnneeField,resultatLabel));
    	resultatLabel.setText("Saisissez le montant...");
 
		frame.add(panel);
 
		frame.pack();
		frame.setSize(380,frame.getHeight());
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
 
	}
 
	private static void update(JTextField montantField, JTextField tauxField,
			JTextField nbreAnneeField, JLabel resultatLabel) {
 
        if ( isEmpty(montantField) ) {
        	resultatLabel.setText("Saisissez le montant...");
        }
        else if ( isKo(montantField) ) {
        	resultatLabel.setText("Le montant doit être un nombre...");
        }
        else if ( isEmpty(tauxField) ) {
        	resultatLabel.setText("Saisissez le taux...");
        }
        else if ( isKo(tauxField) ) {
        	resultatLabel.setText("Le taux être un nombre...");
        }
        else if ( isEmpty(nbreAnneeField) ) {
        	resultatLabel.setText("Saisissez le nombre d'années...");
        }
        else if ( isKo(nbreAnneeField) ) {
        	resultatLabel.setText("Le nombre d'années doit être un nombre...");
        }
 
        else {
 
        	NumberFormat currency = NumberFormat.getCurrencyInstance();
 
        	double montant = getValue(montantField);
        	double rate;
        	double taux = getValue(tauxField);
    		double nbreAnnee = getValue(nbreAnneeField);
    		final int paymentsPerYear = 12;
    		double effectiveAnnualRate;
    		double payment;
 
    		rate = taux/100.00;
 
    		double ans = paymentsPerYear * nbreAnnee;
    		effectiveAnnualRate = rate /paymentsPerYear;
    		payment = montant * (effectiveAnnualRate / (1 - Math.pow(1 + effectiveAnnualRate,-ans)));
 
    		resultatLabel.setText(String.format("%f0.0"+currency.format(payment)));
        }
 
	}
 
 
	private static double getValue(JTextField field) {
		try{
			Number number = NumberFormat.getNumberInstance().parse(field.getText());
			return number.doubleValue();
		}
		catch(ParseException e) {
			return 0;
		}
	}
 
	static final String DECIMAL_PATTERN = "\\d+("+DecimalFormatSymbols.getInstance().getDecimalSeparator()+"\\d*)?";
	private static boolean isKo(JTextField field) {
		return !field.getText().matches(DECIMAL_PATTERN);
	}
 
	private static boolean isEmpty(JTextField field) {
		return field.getText().trim().isEmpty();
	}
 
 
 
	}

Seb