2016-04-10 17 views
0

コードを完全にやり直しました。ほぼ完成しています。私が把握しようとしている最後のことは、ユーザーがプログラムで入力した文字列から大文字の数を取得する方法です。私はScannerとSystem.outをJavaFxなしで使ってプログラムを正しく実行しました。しかし、私は、コードをコンソール入力からテキストフィールドへの入力にどのように翻訳するかを理解していません。ここに私の新しいコードがあります。JAVA FX - 入力から大文字の数を取得する

import java.util.Scanner; 

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.layout.BorderPane; 
import javafx.scene.layout.GridPane; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.control.Button; 
import javafx.scene.control.ContentDisplay; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.stage.Stage; 

public class UppercaseLetters extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 
@Override 
public void start(Stage primaryStage) throws Exception { 

    // Create Pane 
    UpperCase pane = new UpperCase(); 

    primaryStage.setTitle("UpperCase"); 
    primaryStage.setScene(new Scene(pane)); 
    primaryStage.show(); 
    } 

private class UpperCase extends GridPane { 
    Label lblString = new Label("Enter String:"); 
    Label lblAmount = new Label("Number of capital Letters:"); 

    TextField tfString = new TextField(); 
    TextField tfAmount = new TextField(); 

    private UpperCase() { 
     setHgap(10); 
     setVgap(10); 
     setPadding(new Insets(10,10,10,10)); 

     add(lblString, 0, 0); 
     add(tfString, 1, 0); 
     add(lblAmount, 0, 1); 
     add(tfAmount, 1, 1); 

     tfString.setText("0"); 
     tfString.setAlignment(Pos.CENTER_RIGHT); 
     tfAmount.setText("0"); 
     tfAmount.setAlignment(Pos.CENTER_RIGHT); 

     Button submit = new Button("Submit"); 
     HBox hButtons = new HBox(submit); 
     submit.setOnAction(e->{ 

     }); 



    } 
} 


} 

ここには、JavaFxなしで実行されるプログラムのコードがあります。

import java.util.Scanner; 

public class CapitalNumbers { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.print("Enter a string: "); 
     String s = input.nextLine(); 

     System.out.println("The number of uppercase letters = " + count(s.toCharArray())); 
    } 

    public static int count(char[] chars) { 

     return count(chars, chars.length - 1); 
    } 

    public static int count(char[] chars, int high) { 

     int count = Character.isUpperCase(chars[high]) ? 1 : 0; 
     if (high == 0) 
      return count; 
     else 
      return count + count(chars, high - 1); 

    } 
} 
+0

私はあなたの内部クラスUpperPaneが、私は完全にすることなく、今の作業プログラムにコードを編集したあなたのスタート機能 – BoDidely

答えて

1

UpperPaneコンストラクタUpperPane(int value)が不足しています。開始メソッドからUpperPaneを抽出すると、IDEにエラーが表示されます。

今、あなたはあなたのテキストフィールドへの変更に耳を傾ける必要があります。

tfString.setOnAction(e -> { 
       int count = count(tfString.getText().toCharArray()); 
       tfAmount.setText(String.valueOf(count)); 
} 

//or 

tfString.textProperty().addListener((ov, oldText, newText) -> { 
       int count = count(newText.toCharArray()); 
       tfAmount.setText(String.valueOf(count)); 
}); 
+0

内で定義されなければならないとは思いません混乱した混乱。しかし、私はまだ文字列内の大文字の数を数えるためにsetTextとgetTextを使って苦労しています。 – goblin

+0

私はそれをそのように動作させましたが、私はまだその作業を行うために送信ボタンを含める必要があります。 – goblin

関連する問題