Programme avec combobox
miky1111
Messages postés
2
Statut
Membre
-
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
- Programme word gratuit - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - 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);
});