#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