APr*_*Pro 2 java netbeans javafx
我已经搜索了很长时间来编写一个KeyEvent允许我点击按钮的方法ENTER key.请注意,我正在使用JavaFX和FXML文件.
问题是,当在FXML文件的onKeyTyped文本字段中设置时,FXML文件不接受它.它说Handle method not found.它只是接受ActionEvent方法,所以我尝试了这段代码:
@FXML
private void key (KeyEvent evt) throws IOException{
if (evt.getCode() == KeyEvent.VK_ENTER){
String az = text1.getText();
//c.1
if(az.contains("1")){
String hh = text11.getText();
Socket socket = null;
InetSocketAddress isa = new InetSocketAddress (hh,80);
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么请有人帮助我吗?
您的代码几乎没有问题:
你正在使用onKeyTyped而不是onKeyPressed.有关更多信息,请访问此链接
您很可能正在使用java.awt.event.KeyEvent,这将无法使用JavaFX events.尝试使用javafx.scene.input.KeyEvent.
我得出这个结论的原因是因为JavaFX不支持KeyEvent.VK_ENTER但反而有KeyCode.ENTER
下面显示了一个具体示例,您可以使用相同的方法将其转换为FXML:
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class ButtonExample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane pane = new BorderPane();
Button button = new Button("Press Me!");
pane.setCenter(button);
Scene scene = new Scene(pane, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
button.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.ENTER) {
System.out.println("Enter Pressed");
}
}
});
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)