2016-12-30 1 views
1

Je construis ce programme en utilisant javafx et sqllite J'ai bouton dans fxml avec fx: id button1 et onAction: WriteToSqlBouton pour insérer dans sql: gestionnaire d'événements n'est pas dans l'espace de noms ou il y a une erreur dans le script

package valgykla; 

import java.io.IOException; 
import java.net.URL; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
import java.util.ResourceBundle; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.DatePicker; 
import javafx.scene.control.TextField; 
import javafx.event.ActionEvent; 

/** 
* FXML Controller class 
* 
* @author Lukas 
*/ 
public class MeniuController implements Initializable { 
    @FXML 
    private Button button1; 

    @FXML 
    public static void WriteToSql(ActionEvent sql){  
     Connection con = null; 
     PreparedStatement prSt = null; 
     try { 
      Class.forName("org.sqlite.JDBC"); 
      con = DriverManager. 
       getConnection("jdbc:sqlite:database.db"); 
      String query = "insert into Meniu(name,code) values(?,?)"; 
      prSt = con.prepareStatement(query); 
      prSt.setString(1, "jack"); 
      prSt.setString(12, "02545"); 
      int count = prSt.executeUpdate(); 
     } catch (ClassNotFoundException | SQLException e) { 
      // TODO Auto-generated catch block 

     } 
     // TODO Auto-generated catch block 
     finally{ 
      try{ 
       if(prSt != null) prSt.close(); 
       if(con != null) con.close(); 
      } catch(Exception ex){} 


     } 
    } 

    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
    }  


} 

malheureusement j'obtiens l'erreur

Caused by: javafx.fxml.LoadException: Error resolving onAction='#WriteToSql', either the event handler is not in the Namespace or there is an error in the script. 
file:/C:/Users/Lukas/Desktop/lukasX/Valgykla/dist/run1382723305/Valgykla.jar!/valgykla/Meniu.fxml:29 

Répondre

1

La méthode WriteToSql est static. JavaFX ne considère pas static méthodes du contrôleur pour les gestionnaires d'événements (plus) ... (Voir aussi javafx 8 compatibility issues - FXML static fields)

Il suffit de supprimer le mot-clé static pour résoudre le problème. De plus, puisque vous la méthode avec annoté @FXML, vous pouvez également faire private:

@FXML 
private void WriteToSql(ActionEvent sql){ 
    ... 
-1

emmmm, quand je l'essayer sur Eclipse j'utilise onAction = « # youfuctionname », puis faire un error.I vérifier tout, Il n'y a rien de mal. Alors, je supprime le symbole #, ça marche bien.Mais après un moment, quand j'essaie d'exécuter un autre programme, il y a erreur, et je ne sais pas pourquoi, je le cherche en ligne et je vois # nom onAction, enfin je mets # à mon nom onAction, bizarrement ça marche. mon ide arrive toujours autant de problèmes étrangement ........ non seulement eclipes

+1

Pouvez-vous nettoyer la langue et le formatage un peu? On ne sait pas s'il s'agit d'une réponse efficace ou d'un type de réponse «moi aussi». Veuillez garder les réponses courtes, claires et précises. – roelofs