Bonjour à tous,
J'ai commencé cette semaine à travailler sur Swing et les interfaces graphiques, et j'essaie de réaliser un convertisseur "Km/Miles" avec un JSlider, qui changerait en temps réel la valeur de la distance en km (soit qui démarre de 0, soit indiqué à la main dans un JTextField), et la distance en miles (avec la conversion mathématique qui va bien ^^).
J'ai un souci avec ChangeListener.
Comme vous pouvez le constater, la méthode "implémentée" par le ChangeListener ne correspond en rien avec ce que j'ai pu lire sur différents site, notamment celui d'Oracle, à savoir stateChanged(ChangeEvent e).
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 package com.mycompany.convertisseurkmmilesv2; import java.awt.Dimension; import java.awt.GridLayout; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.JTextField; public class Fenetre extends JFrame implements ChangeListener{ private JPanel panPrinc; private JPanel panKm; private JPanel panMiles; private JSlider sliderKm; private JTextField valeurKm; private JLabel labelKm; private JLabel conversionMiles; private JLabel labelMiles; int valeur = 0; public Fenetre() { // JFrame this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("Convertisseur Km en Miles"); this.setLocationRelativeTo(null); // Panel principal panPrinc = new JPanel(new GridLayout(2,1)); // Panel Km panKm = new JPanel(); panKm.setBorder(BorderFactory.createTitledBorder("Distance en kilomètres")); valeurKm = new JTextField(); valeurKm.setPreferredSize(new Dimension(50,30)); labelKm = new JLabel("km"); sliderKm = new JSlider(JSlider.HORIZONTAL,0,100,0); sliderKm.setMajorTickSpacing(10); sliderKm.setMinorTickSpacing(1); sliderKm.setPaintLabels(true); sliderKm.setPaintTicks(true); panKm.add(valeurKm); panKm.add(labelKm); panKm.add(sliderKm); // panel Miles panMiles = new JPanel(); panMiles.setBorder(BorderFactory.createTitledBorder("conversion en miles")); conversionMiles = new JLabel(); labelMiles = new JLabel("miles"); labelMiles.setOpaque(true); panMiles.add(conversionMiles); panMiles.add(labelMiles); // ChangeListener du slider // les panels panPrinc.add(panKm); panPrinc.add(panMiles); // JFrame this.setContentPane(panPrinc); this.setVisible(true); } @Override public void changed(ObservableValue observable, Object oldValue, Object newValue) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }
bien évidemment, en le modifiant, ça me fait des erreurs.
Que faire ? est-ce normal ?
PS : pour information, j'ai une autre classe Main, où je ne fais qu'appeler l'objet Fenetre, afin de lancer l'appli.
Bien à vous, ami(e)s développeur(euse)s.
Partager