JSlider et ChangeListener [Résolu]

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

2 réponses

Répondre au sujet
KX 15359 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - 26 août 2017 à 16:04
0
Utile
1
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 2 Messages postés samedi 26 août 2017Date d'inscription 26 août 2017 Dernière intervention - 26 août 2017 à 16:20
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.