Программа текстовой области Java FX 8, отображающая ошибки

#java #javafx-8

#java #javafx-8

Вопрос:

Я пытаюсь создать программу текстовой области JavaFX 8, которая отображает строку в текстовой области в метке, а также изменяет строку в текстовой области. Графический интерфейс состоит из двух кнопок и текстовой области. Я создал программу текстовой области JavaFX 8, которая при компиляции выдает следующую ошибку.

 TextAreaDemo1.java:84: error: cannot find symbol
ta.setOnAction(new EventHandler<ActionEvent>() {
  ^
  symbol:   method setOnAction(<anonymous EventHandler<ActionEvent>>)
  location: variable ta of type TextArea
1 error

  

Это мой программный код:

 
// Demonstrate a text field.

import javafx.application.*;
import javafx.scene.*;
import javafx.stage.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.event.*;
import javafx.geometry.*;

public class TextAreaDemo1 extends Application {

TextArea ta;
Label response;

Button btnGetText;
Button btnReverse;

public static void main(String[] args){

// Start the JavaFX application by calling launch().

launch(args);

}

// Override the start() method.

public void start(Stage myStage){

// Give the stage a title.

myStage.setTitle("Demonstrate a TextArea");

// Use a FlowPane for the root node. In this case,
// vertical and horizontal gaps of 10.

FlowPane rootNode = new FlowPane(10, 10);

// Center the controls in the scene.

rootNode.setAlignment(Pos.CENTER);

// Create a Scene.

Scene myScene = new Scene(rootNode, 230, 140);

// Set the scene on the stage.

myStage.setScene(myScene);

// Create a label that will display the string.

response = new Label("String: ");

// Create a button that gets the text.

btnGetText = new Button("Get String");

// Create button that reverses the text.

btnReverse = new Button("Reverse");

// Create a text field

ta = new TextArea();

// Set the prompt.

ta.setPromptText("Enter a String");

ta.setFocusTraversable(false);

// Set preferred column count.

ta.setPrefRowCount(5);
ta.setPrefColumnCount(10);

// Handle action events for the text field. Action
// events are generated when ENTER is pressed while
// the text area has input focus. In this case, the
// text in the field is obtained and displayed.

ta.setOnAction(new EventHandler<ActionEvent>() {

public void handle(ActionEvent ae) {

response.setText("String: "   ta.getText());

}

});

// Get text from the text field when the button is pressed
// and display it.

btnGetText.setOnAction(new EventHandler<ActionEvent>() {

public void handle(ActionEvent ae) {

response.setText("String: "   ta.getText());

}

});

// Get text from the text field when the button is pressed,
// reverse it using a StringBuilder, and then display it.

btnReverse.setOnAction(new EventHandler<ActionEvent>() {

public void handle(ActionEvent ae) {

StringBuilder str = new StringBuilder(ta.getText());
ta.setText(str.reverse().toString());

}

});

// Use a separator to better organize the layout.

Separator separator = new Separator();
separator.setPrefWidth(200);

// Add controls to the scene graph.

rootNode.getChildren().addAll(ta, btnGetText, btnReverse, separator, response);

// Show the stage and its scene.

myStage.show();

}

}

  

Не могли бы вы мне помочь.

Комментарии:

1. setEventHandler как setOnAction вероятно из более современного JavaFX. Хотя в первом ответе предлагается другое событие.

Ответ №1:

Из комментариев в вашем коде я вижу, что вы пытаетесь отобразить текст при нажатии enter в текстовой области. Вместо этого вы должны прослушать событие нажатия клавиши.

Пример:

 ta.setOnKeyPressed(new EventHandler<KeyEvent>() {
    public void handle(KeyEvent ke) {
        if (ke.getCode() == KeyCode.ENTER) {
             response.setText("String: "   ta.getText());
        }
    }
});
  

Комментарии:

1. TextAreaDemo1.java:96: ошибка: не удается найти символ ta.setOnKeyPressed(новый обработчик событий<KeyEvent>() { ^ символ: расположение ключевого события класса: класс TextAreaDemo1 TextAreaDemo1.java:97: ошибка: не удается найти символ открытого дескриптора пустоты (KeyEvent ke) { ^ символ: класс KeyEvent TextAreaDemo1.java :98: ошибка: не удается найти символ, если (ke.getCode() == Код ключа. ВВЕДИТЕ) { ^ символ: переменный код ключа 3 ошибки. Обработчик событий с нажатой клавишей показывает указанную выше ошибку. но при пропуске кода обработчика событий работает

2. Импортируйте их. @Rohit