Programme avec combobox
miky1111
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
miky1111 -
miky1111 -
bonsoir a tous !!!
je suis novice en programmation java; j'ai ecris un petit programme javafx avec une combobox et des evenements liés aux differents items de la combobox mais j'ai une erreur...
voici le code
je suis novice en programmation java; j'ai ecris un petit programme javafx avec une combobox et des evenements liés aux differents items de la combobox mais j'ai une erreur...
voici le code
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package inscription; import java.util.List; import javafx.application.Application; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; /** * * @author samba */ public class Inscription extends Application { @Override public void start(Stage fenetre){ fenetre.show(); fenetre.setTitle("Inscription"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setPadding(new Insets(25,25,25,25)); grid.setHgap(10); grid.setVgap(10); Scene sc = new Scene(grid,500,400); sc.getStylesheets().add(Inscription.class.getResource("style.css").toExternalForm()); Text title = new Text("Calcul Montant"); title.setFont(Font.font("Tahoma",FontWeight.BOLD,30)); grid.add(title,0,0,2,1); // matricule Label matricule = new Label("Matricule"); grid.add(matricule, 0, 1); TextField matfield = new TextField(); grid.add(matfield, 1, 1); matfield.setPromptText("entrer le matricule"); //nom Label nom = new Label("Nom"); grid.add(nom, 0,2 ); TextField nomfield = new TextField(); grid.add(nomfield, 1, 2); nomfield.setPromptText("entrer le nom"); //prenom Label prenom = new Label("Prenom"); grid.add(prenom, 0, 3); TextField prenomfield = new TextField(""); grid.add(prenomfield, 1, 3); prenomfield.setPromptText("entrer le prenom"); //filiere Label fil = new Label("Filiere"); grid.add(fil, 0, 4); ComboBox <String> filiere = new ComboBox(); filiere.setEditable(true); //ajouter du contenu a la comboBox filiere.getItems().setAll("Gestion","Informatique","Sante","Education","Theologie"); //recuperer la valeur selectionnée dans la comboBox String result = filiere.getSelectionModel().selectedItemProperty().getValue(); // grid.add(filiere,1,4); Label qte = new Label("Montant payé"); grid.add(qte, 0, 5); TextField qtefield = new TextField(""); grid.add(qtefield, 1, 5); qtefield.setPromptText("entrer le montant versé"); //creation d'un label et d'un champ texte pour entrer le prix Button btn = new Button("Valider"); grid.add(btn, 1, 6); Text netapayer = new Text("Montant Restant a payer:"); netapayer.setId("result"); grid.add(netapayer, 0, 7); fenetre.setScene(sc); fenetre.show(); btn.setDefaultButton(true); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { double qte = Double.parseDouble(qtefield.getText()); double montant= 0; switch(result){ case "Gestion":montant=900000.0 - qte; break; case "Informatique":montant = 1000000.0 - qte; break; case "Theologie": montant = 500000.0 - qte; break; case "Sante": montant = 1500000.0 - qte; break; default:break; } netapayer.setText("Net à payer = " + " " + montant); } }); } public static void main(String[] args) { launch(args); } }
A voir également:
- Programme avec combobox
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at inscription.Inscription$1.handle(Inscription.java:115)
at inscription.Inscription$1.handle(Inscription.java:109)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238).....
(ton erreur)
Evite de faire 2 sujet pour le même probleme :p
Cordialement
at inscription.Inscription$1.handle(Inscription.java:115)
at inscription.Inscription$1.handle(Inscription.java:109)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238).....
(ton erreur)
Evite de faire 2 sujet pour le même probleme :p
Cordialement
miky1111
bien recu merci
Bonjour,
Il faut faire la correspondance entre le message d'erreur et le code qui correspond.
La ligne 115 c'est
Cela s'explique par ton
Il vaudrait mieux faire ton selectedItemProperty() au moment où tu cliques sur le bouton.
Il faut faire la correspondance entre le message d'erreur et le code qui correspond.
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at inscription.Inscription$1.handle(Inscription.java:115)
La ligne 115 c'est
switch (result){le problème c'est donc que result = null.
Cela s'explique par ton
String result = filiere.getSelectionModel().selectedItemProperty().getValue();qui est fait à l'initialisation de la fenêtre, alors qu'il n'y a encore aucun élément choisi...
Il vaudrait mieux faire ton selectedItemProperty() au moment où tu cliques sur le bouton.
btn.setOnAction(event -> { double qteValue = Double.parseDouble(qtefield.getText()); double montant = 0; // recuperer la valeur selectionnée dans la comboBox String result = filiere.getSelectionModel().selectedItemProperty().getValue(); switch (result) { case "Gestion": montant = 900000.0 - qteValue; break; case "Informatique": montant = 1000000.0 - qteValue; break; case "Theologie": montant = 500000.0 - qteValue; break; case "Sante": montant = 1500000.0 - qteValue; break; default: break; } netapayer.setText("Net à payer = " + montant); });