JSlider et ChangeListener [Résolu]

Messages postés
2
Date d'inscription
samedi 26 août 2017
Dernière intervention
26 août 2017
- - Dernière réponse : Senjinsama
Messages postés
2
Date d'inscription
samedi 26 août 2017
Dernière intervention
26 août 2017
- 26 août 2017 à 16:20
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.
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.
}

}


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).
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.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Bonjour,

Historiquement pour faire des interfaces graphiques en Java il y a eu AWT (en Java 1), Swing (en Java 2) puis Java FX (en Java 8).

Pour des raisons de compatibilité avec les anciens programmes il est encore possible de faire du AWT/Swing mais aujourd'hui les nouveaux programmes devraient plutôt être fait en Java FX.

Regarde tes imports, tu as du java.awt, du javax.swing et du javafx, c'est de ce mélange que vient ton problème, car le ChangeListener dont tu as besoin c'est celui de Swing, mais tu as importé celui de Java FX.

Voici les bons imports :

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
Senjinsama
Messages postés
2
Date d'inscription
samedi 26 août 2017
Dernière intervention
26 août 2017
-
Ahah !!! je ne fais jamais attention à ce que j'importe : ALT+Entrée et le rouge disparait... ça m'apprendra !!! xD
Une erreur de débutant résolue !!! ;)

Merci beaucoup, KX :)
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.