2016-04-24 168 views
0

我必須編寫一個程序,以字母升序讀取並顯示文本文件中的所有單詞。該文本文件作爲命令行參數傳遞。該程序還必須具有輸入框,提交按鈕,並且結果顯示在其下方的同一個窗口中。Java FX,功能不能正常工作

我編輯了程序並清理了它。刪除文件名方法並調用按鈕方法使其更簡單,並嘗試使提交按鈕生效。但是,似乎沒有任何改變。一切工作到我按下提交按鈕然後什麼也沒有發生。

import java.io.*; 
import java.util.*; 
import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.text.Text; 
import javafx.scene.control.Button; 
import javafx.scene.control.TextField; 
import javafx.scene.control.TextArea; 

public class AlphabeticalOrder extends Application { 

    TextField fileName = new TextField(); 
    Button submitButton = new Button("Submit"); 
    TextArea outputArea = new TextArea(); 

    public void button() { 
     submitButton.setOnAction(e -> { 
      if(fileName.getText().length() > 0) { 
       submitButtonClick(); 
      } 
     }); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     try { 
      BorderPane root = new BorderPane(); 

      Scene scene = new Scene(root,400,400); 

      primaryStage.show(); 

      // Set the stage title 
      primaryStage.setTitle("AlphabeticalOrder"); 

      // Place the scene in the stage 
      primaryStage.setScene(scene); 

      // Display the stage 
      primaryStage.show(); 

      // Hold a button in an HBox 
      HBox inputBox = new HBox(); 
      inputBox.setSpacing(10); 
      inputBox.setAlignment(Pos.CENTER); 
      inputBox.getChildren().addAll(new Text("Filename:")); 
      inputBox.getChildren().addAll(fileName); 
      inputBox.getChildren().addAll(submitButton); 
      root.setTop(inputBox); 

      //This creates a text box to display the results 
      //from reading the file in a pane 
      outputArea.setStyle("-fx-text-fill: black"); 
      outputArea.setStyle("-fx-background-color: grey"); 
      root.setCenter(outputArea); 
     } catch(Exception e) { 
      button(); 
      e.printStackTrace(); 
     } 
    } 


    public void submitButtonClick() { 
     if(fileName.getText().length() > 0) { 
      File sourceFile = new File(fileName.getText()); 
     if (!sourceFile.exists()) { 
      System.out.println("Source file " + fileName.getText() 
        + " does not exist"); 
      } 
     } 

     fileName.setText("Test 1"); 
    } 

    class SortFile 
    { 
     //sorting function 
    void sortArray(String array[]) { 
     //Loop for no.of passes 
    for(int i=0;i<array.length-1;i++) 

     //Repeat no.of comparisons 
     for(int j=0;j<array.length-i-1;j++) 

      //Comparing adjacent elements 
      if(array[j].compareTo(array[j+1])>0) 
    { 
       //Swap using temp variable 
       String temp=array[j]; 
       array[j]=array[j+1]; 
       array[j+1]=temp; 
       } 
    } 
    public void reader(String args[]) 
    { 
     //Creating File object 
     File freader; 

     //Scanner for reading 
     Scanner filescanner; 

     //Array list for dynamic elements adding 
    ArrayList <String> array = new ArrayList<String>(); 

    //If file name is no.of passed as argument is 1 
    if(args.length==1) 
    { 
    try 
    { 
     //Create file object 
     freader = new File(args[0]); 

     //Reading from file 
     filescanner = new Scanner(freader); 

     //Reading until end of file 
    while(filescanner.hasNext()) 
    { 
     //Reading each word and to Array List 
     array.add(filescanner.next()); 
    } 
    } 
    //If file IOException is thrown 
     catch(IOException ie) 
    { 
    System.out.println(ie); 
    }String[] newArray = new String[array.size()]; 

    //Convert Array list to ArraynewArray=array.toArray(newArray); 

    System.out.println("List of strings from file Before Sorting : \n"); 

    //Print before sorting words 
    for(int i=0;i<newArray.length;i++) 
    System.out.print(newArray[i]+" "); 

    //Call sorting method 
    sortArray(newArray); 
    System.out.println("\nList of strings from file After Sorting : \n"); 

    //Print after sorting words 
    for(int i=0;i<newArray.length;i++) 
    System.out.print(newArray[i]+" "); 

    System.out.print("\n"); 
    } 
    else 
     //If file name is not passed as argument then show usage syntax 
     System.out.println("Usage syntax: SoftFile <Words.rtf>");} 
    } 
    } 
+0

我更新了問題。 – goblin

回答

0

你從來沒有處理程序連接到您的提交按鈕 - button功能,做到這一點只調用一次,由filename,這反過來又不會被調用。

編輯:我建議你花些時間閱讀this tutorial

+0

我在哪裏可以調用fileName方法 – goblin

+0

您仍然只是在'catch'塊中調用它。我不確定你期望發生什麼。 – Itai