2016-12-30 3 views
1

javafxとsqlliteを使用してこのプログラムを構築しています fxmlにfx:idボタン1のボタンがあります とonAction: WriteToSqlはsql:eventハンドラに挿入するボタンが名前空間にないか、スクリプトにエラーがあります

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 
    }  


} 

悲しいことに私はWriteToSql方法がstaticでエラー

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 

答えて

1

を取得します。 JavaFXでは、イベントハンドラ用のコントローラのstaticメソッドは考慮されていません...(javafx 8 compatibility issues - FXML static fieldsも参照してください)

キーワードを削除するだけで問題を解決できます。あなたは@FXMLとメソッドを注釈付きさらにので、あなたもそれをprivateを行うことができます。私は最初の日食でそれをしようとすると

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

emmmmを、私はonAction =「#1 youfuctionname」を使用し、その後、error.Iはそれをすべてチェック起こします何も間違っていません。シンボル#を削除してもうまくいきます。しかし、しばらくすると、別のプログラムを実行しようとすると、エラーが発生し、なぜかわからないので、オンラインで検索して# onActionの名前、最後に#私のonActionの名前に戻って、奇妙なことに動作します。 私のイデアルはいつもそんなに多くの奇妙な問題が起こる........ eclipesだけでなく

+1

言語を整理して少しフォーマットすることはできますか?これが実用的な答か、それとも「私も」の回答かどうかは不明です。答えは短く、明確で、その点に留めてください。 – roelofs

関連する問題