2016-04-05 18 views
0

Ich habe noch nie versucht, eine GUI zu erstellen, und ich stecke auf etwas, das wahrscheinlich nicht etwas ist, auf dem ich stecken sollte. Wie bekomme ich das Textfeld um den Text ohne Aktion zu setzen? Ich habe versucht, setText zu verwenden ... Ich weiß, dass ich es einstellen kann, wenn ich auf den Suchknopf klicke, aber ich denke nicht, dass es mir erlaubt, das zu tun und es an den Query-String anzuhängen. Jede Hilfe oder Anweisung wird sehr geschätzt.JavaFx Textfeld Text festlegen

import javafx.application.Application; 
    import javafx.geometry.Insets; 
    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.stage.Stage; 

    public class gui extends Application { 

     Stage window; 
     ComboBox<String> dropDown; 
     Button button; 
     TextField searchString; 
     String dropField; 
     String inputText; 
     String queryText; 


     public static void main(String[] args) { 

      Application.launch(args); 
     } 

     @Override 
     public void start(Stage primaryStage) throws Exception { 
      window = primaryStage; 
      window.setTitle("Deep Search"); 

      GridPane layout = new GridPane(); 
      layout.setPadding(new Insets(10, 10, 10, 10)); 
      layout.setVgap(8); 
      layout.setHgap(10); 

      //ComboBox Label 
      Label comboLabel = new Label("Field:"); 
      GridPane.setConstraints(comboLabel, 0,0); 

      //ComboBox 
      dropDown = new ComboBox<>(); 
      dropDown.getItems().addAll(
        "all_fields", 
        "identifier", 
        "component", 
        "de_manager", 
        "de_priority", 
        "engineer", 
        "found", 
        "headline", 
        "integrated_releases_text", 
        "product", 
        "project", 
        "severity", 
        "status", 
        "submitted_on", 
        "submitter_id", 
        "version_text" 
      ); 
      dropDown.setPromptText("Select Search Field"); 
      dropDown.setOnAction(e -> setSearchField()); 
      GridPane.setConstraints(dropDown, 2, 0); 

      //search box 
      searchString = new TextField(); 
      searchString.setOnAction(e -> setSearchText()); 
      searchString.setPromptText("Enter search string..."); 
      GridPane.setConstraints(searchString, 2, 2); 

Hier ist das Textfeld. Hier wird der Text gesetzt, wenn der Benutzer auf Enter klickt. Ich würde gerne wissen, wie ich den Text ohne eine Aktion festlegen kann, wie es an eine Abfrage mit der Auswahl hinzugefügt wird, die in dem Kombinationsfeld oben getroffen wird, wenn auf die Schaltfläche geklickt wird.

  //Search button 
      button = new Button("Search"); 
      button.setOnAction(e -> queryMethod()); 
      GridPane.setConstraints(button, 2, 10); 

      layout.getChildren().addAll(comboLabel, dropDown, searchString, button); 

      Scene scene = new Scene(layout, 300, 200); 
      window.setScene(scene); 
      window.show(); 
     } 

     private void setSearchField(){ 

      dropField = dropDown.getValue(); 
     } 

     private void setSearchText(){ 

      inputText = searchString.getText(); 

     } 

     private void queryMethod(){ 

      queryText = "SELECT identifier, component, de_manager, de_priority, engineer, found, headline, " + 
        "integrated_releases_text, product, project, severity, status, submitted_on, submitter_id, " + 
        "version_text FROM BUG WHERE " + dropField + ":" + inputText; 
     } 

    } 

Antwort

0

Es ist nicht ganz klar, was Sie fragen, aber ich glaube, Sie wollen einfach nur den Text aus dem Textfeld erhalten in queryMethod():

private void queryMethod(){ 

     queryText = "SELECT identifier, component, de_manager, de_priority, engineer, found, headline, " + 
       "integrated_releases_text, product, project, severity, status, submitted_on, submitter_id, " + 
       "version_text FROM CDETS_ETL_BUG WHERE " + dropField + ":" + searchString.getText(); 
    } 
+0

Ja, das ist genau das, was ich wollte. Ich danke dir sehr! – anshanno