2017-05-08 5 views
0

Der folgende Code ist in Java die Schaltfläche Ausführen funktioniert in Ordnung und sendet eine Nachricht an meine Nummer, wenn es den Fehler, den ich ausgewählt habe, und dann zeigt es die Fehler in einer TextboxArea aber die Stoppschaltfläche nicht an Ende der Schleife es verlässt das program.How kann ich die Stopp-TasteSo implementieren Sie eine Stopptaste

/* 
    * 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 postilion_error_checker; 

import java.io.IOException; 
import java.net.URL; 
import java.sql.*; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.ResourceBundle; 
import java.util.Timer; 
import java.util.TimerTask; 
import java.util.logging.FileHandler; 
import java.util.logging.Handler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.util.logging.SimpleFormatter; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.ComboBox; 
import javafx.scene.control.Label; 
import javafx.scene.control.ScrollPane; 
import javafx.scene.control.TextArea; 
import javafx.scene.control.TextField; 

/** 
* 
* @author kithinjid 
*/ 
public class checker_guiController implements Initializable { 

    static Logger log; 
    static Handler file_handler; 
    static Connection conn=null; 
    static Statement st=null; 
    static ResultSet rs=null; 
    static int i = 0; 
    int counter=0; 
    static boolean checker=true; 
    String number; 
    String Sink_node; 
    String Rsp_code; 
    int Respose_code; 



    @FXML 
    private TextArea TA; 
    @FXML 
    private Label label; 
    @FXML 
    private TextField get_NO; 
    @FXML 
    private TextArea preview; 
    @FXML 
    private Button run; 
    @FXML 
    private Button stop; 
    @FXML 
    private ComboBox item; 
    @FXML 
    private ComboBox item2; 


    @FXML 
    private void handleRUNAction(ActionEvent event) 
    { 
     scheduled(); 

     System.out.println("execution started"); 
     String out="execution started"; 
     TA.appendText(out+ "\n"); 
    } 
    @FXML 
    private void handleButtonAction(ActionEvent event) 
    { 
     number=get_NO.getText(); 
     Sink_node=item.getSelectionModel().getSelectedItem().toString(); 
     Rsp_code=item2.getSelectionModel().getSelectedItem().toString(); 
     Respose_code=Integer.parseInt(Rsp_code.substring(0, 1)); 
     preview.appendText("RECEIVER:"+number + "\n"); 
     preview.appendText("SINK NODE:"+Sink_node + "\n"); 
     preview.appendText("RESPONSE CODE:"+Rsp_code + "\n"); 
     preview.appendText("=========================\n"); 
     get_NO.clear(); 
    } 
    @FXML 
    private void handlestopAction(ActionEvent event) 
    { 
     dbclose(); 
     System.exit(0); 
    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) 
    { 

    } 
     private void dbconnect() 
    { 
     String username="Postilion"; 
     String password="Password12"; 

     String hostname="jdbc:sqlserver://172.16.112.6;databaseName=realtime"; 
     try 
     { 
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
      conn=DriverManager.getConnection(hostname,username,password); 
      System.out.println("TIME:"+dateString("MM:dd-HH:mm:ss")+":connected to database"); 
      String out_data="TIME:"+dateString("MM:dd-HH:mm:ss")+":connected to database"; 
      TA.appendText(out_data+ "\n"); 

     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     } 

     private ResultSet check_00(String query1) 
    { 
     dbconnect();  

     try 
     { 
     st=conn.createStatement(); 
     rs=st.executeQuery(query1); 
     }catch(Exception e) 
     { 
     e.printStackTrace(); 
     } 


     return rs ; 
    } 
     public void dbclose() 
     { 

      counter=0; 
     try { 
      conn.close(); 
      st.close(); 
     } catch (SQLException ex) { 
      Logger.getLogger(checker_guiController.class.getName()).log(Level.SEVERE, null, ex); 
     } 

     } 
    public void scheduled() 
    { 


    Timer timer=new Timer(); 
    timer.schedule(new TimerTask() { 

    @Override 
    public void run() 
    { 
    while(checker==true) 
    { 
// log=logger.getLogger("my logger"); 
// try { 
// file_handler=new FileHandler("C:\\Users\\kithinjid\\Google Drive\\interswitch\\NetBeansProjects\\POSTILION_ERROR CHECKER\\dist\\logg.txt"); 
// SimpleFormatter formatter=new SimpleFormatter(); 
// file_handler.setFormatter(formatter); 
// log.addHandler(file_handler); 
// } catch (IOException ex) { 
// log.info(dateString("HHmmss")); 
// Logger.getLogger(POSTILION_ERROR_CHECKER.class.getName()).log(Level.SEVERE, null, ex); 
// } catch (SecurityException ex) 
// { 
// Logger.getLogger(POSTILION_ERROR_CHECKER.class.getName()).log(Level.SEVERE, null, ex); 
//// } 
    String query="SELECT TOP 10 [tran_nr]\n" + 
"  ,[gmt_date_time]\n" + 
"  ,[time_local]\n" + 
"  ,[date_local]\n" + 
"  ,[sink_node]\n" + 
"  ,[rsp_code_req_rsp]\n" + 
"  ,[rsp_code_cmp]\n" + 
"  ,[rsp_code_rev]\n" + 
" FROM [realtime].[dbo].[tm_trans_10]where sink_node ='"+Sink_node+"' ORDER BY tran_nr desc"; 
     dbconnect(); 


    try 
    { 
     ResultSet result=check_00(query); 

     while(result.next()==true) 
     { 
      //loop for counter and displaying 
     int response=Integer.parseInt(result.getString("rsp_code_req_rsp")); 
    System.out.println(response); 
    TA.appendText(response+ "\n"); 
    if (response==0) 
    { 
    counter++; 
    if (counter==5) 
    { 
    System.out.println("TIME:"+dateString("MM:dd-HH:mm:ss")+"--error respose code:91 of count:"+ counter+" to sink node:"+Sink_node); 
    String output="TIME:"+dateString("MM:dd-HH:mm:ss")+"--error respose code:91 of count:"+ counter+" to sink node:"+Sink_node; 
    TA.appendText(output); 
    send_sms(number,output); 
    } 
    } 

     } 
     dbclose(); 
     delay(); 
     counter=0; 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
         // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
        } 
        } 
    },0,30000); 

    } 
    public static void delay() 
    { 
     try 
     { 
      Thread.sleep(5 * 60 * 1000); 
     }catch(Exception e) 
     { 

     } 
    } 
    private static String dateString(String formart) 
    { 
     DateFormat dateFormat = new SimpleDateFormat(formart); 
     java.util.Date date = new java.util.Date(); 
     return dateFormat.format(date); 
    } 
    public static void send_sms(String receiver, String text) 
    { 

     String app_name="Postilion_Error_checker"; 
     String sender_ID="VERVE"; 
     String user_Name="PostilionErrorChecker"; 
     String pass_word="Post4334dild"; 
     String output=sendSMS(receiver,text, app_name, sender_ID, null,user_Name, pass_word); 
     System.out.println(output); 
    } 
     private static String sendSMS(java.lang.String recipient, java.lang.String text, java.lang.String appName, java.lang.String senderID, java.lang.String reference, java.lang.String userName, java.lang.String password) { 
     org.tempuri.SMSGatewayWs service = new org.tempuri.SMSGatewayWs(); 
     org.tempuri.SMSGatewayWsSoap port = service.getSMSGatewayWsSoap(); 
     return port.sendSMS(recipient, text, appName, senderID, reference, userName, password); 
    } 
} 

this is the image of the program when running

+1

was anderes als das Beenden des Programms erwarten Sie beim Aufruf von 'System.exit (0);'? –

+0

Warum ist das mit "Swing" markiert? Welcher Swing-Code ist vorhanden? –

+0

seine markierte Swing weil Javafx von dort fortgeschritten –

Antwort

-1

Zunächst dass implementieren alle ist Java. Ihre Projektstruktur muss etwas Großes darstellen, ein Geschäft, eine Fabrik oder sogar die ganze Stadt mit all ihren Ökosystemen. Für den Moment hast du einen Stein und dein Stein ist ungefähr 10 mal größer als der normale Stein. Lesen Sie über das SINGLE RESPONSIBILITY PRINCIPLE und Sie werden beginnen, die Dinge viel einfacher zu implementieren. Ok, das war ein nettes Off-Thema, und für deine Frage: System.exit() wird Ihre JVM töten, so dass Entwickler normalerweise davon fern bleiben. Aber wenn Sie darauf bestehen, können Sie es für "Beenden"/"Schließen" -Button verwenden.

Ich sehe, Sie haben eine rekursive Methode. Vielleicht sollte es eine Exit-Kriterien mit so etwas wie dieses:

if(isStopped)return 

und Ihre ersetzen

System.exit() 

mit

isStopped = true; 

und an der Spitze der Klasse für sie als statisch deklarieren erste Version.

public static boolean isStopped = false; 
+0

gute Eins lassen Sie mich dies versuchen, und ich werde so schnell wie möglich zurückkehren –

Verwandte Themen