当前位置: 首页 > 知识库问答 >
问题:

JavaFX按钮事件处理程序编译错误[重复]

鲜于高明
2023-03-14

我的一段代码

package scr;

import java.awt.event.ActionEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Control;
import javafx.scene.control.Dialogs;
import javafx.scene.control.ListView;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;


public class Client extends Application implements Runnable{

    @FXML 
    private TextArea chatHistory; 
    private TextField txtMessage ;




    // define the socket and io streams
    Socket client;
    DataInputStream dis;
    DataOutputStream dos;


    @Override
    public void start(Stage stage) throws Exception {
        String input = Dialogs.showInputDialog(stage, "Please enter your name:", "Input Dialog", "title");
        BorderPane root = new BorderPane(); 
            VBox vb = new VBox();
            vb.setSpacing(10);

            TextArea chatHistory = new TextArea();
            vb.getChildren().add(chatHistory);


            TextField txtMessage=new TextField() ;
            vb.getChildren().add(txtMessage);

            Button btnSend = new Button();
            btnSend.setText("Send");
            vb.getChildren().add(btnSend);

            ListView<String> lvList = new ListView<String>();
         // lvList.setItems(items);
            lvList.setMaxHeight(Control.USE_PREF_SIZE);

            vb.setPadding(new Insets(10, 10, 10, 10));
            root.setTop(vb);
            root.setRight(lvList);
              // Set margin for top area.
            BorderPane.setMargin(vb, new Insets(10, 10, 10, 10));

下一条语句的错误为

Multiple markers at this line
    - Bound mismatch: The type ActionEvent is not a valid substitute for the bounded parameter <T    extends Event> of the type EventHandler<T>
    - The method setOnAction(EventHandler<ActionEvent>) in the type ButtonBase is not applicable     for the arguments (new EventHandler<ActionEvent>(){})
 //btnSend event
            btnSend.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent event){

                        try {
                            dos.writeInt(ServerConstants.CHAT_MESSAGE); // determine the type of message to be sent
                            dos.writeUTF(txtMessage.getText()); // message payload

                            dos.flush(); // force the message to be sent (sometimes data can be buffered)
                        }
                        catch (IOException e){
                            e.printStackTrace();
                        }

             }
            });

共有1个答案

王君墨
2023-03-14

因为您试图将awt包的ActionEvent添加到javaFx组件“节点”。更改导入java.awt.event.ActionEvent;导入javafx.event.ActionEvent

 类似资料:
  • 我仍然是Java和JavaFX的初学者,目前我正在努力寻找一种方法来阻止/中断单击按钮时发生的事件。因此,我正在构建一个程序,将产品(类)添加到TableView中。到目前为止,一切正常,产品添加成功,其参数由我的自定义函数检查,用户是否在名称/价格/金额字段中分别输入了字符串/双精度/整数值。 在我的检查功能中,当输入的值不正确时,也会打印一个错误,但我也希望这样做,以便在输入不正确的值时,3个

  • 上周我刚开始使用JavaFx,但在尝试在窗格中设置圆圈以响应按钮事件处理程序时遇到了问题。我有左、右、上、下名称的按钮设置,按下时应该会在窗格内移动圆圈。我的问题是我根本无法让圆圈响应我的事件处理程序。我看到了另一个包含按键移动圆圈的教程,我正在尝试类似的东西,但用按钮代替。任何帮助我走向正确方向的帮助都将非常感谢。

  • 我正在创建一个JavaFX应用程序。我可以启动应用程序并登录,但当我尝试访问客户场景时,会出现以下错误: (提前为所有代码道歉 这里是CustomerScene。fxml: 以下是我的控制器类(正在进行中): 错误说它找不到事件处理程序。我不知道为什么,因为我已将@FXML附加到函数。我还尝试将函数公开(fxml文档仍然建议这两者,在第27行显示错误-

  • 学生班 FXML文件

  • 问题内容: 我在JavaFX中有一个舞台,可以通过多种方式关闭该舞台,方法是单击红色(X)或通过一个调用 无论舞台如何关闭,我都希望在舞台关闭之前(或之后)执行操作。 如果我使用以下代码: 然后当我单击(X)时调用处理程序,但当我调用 不同之处在于,他希望在整个应用程序关闭时调用处理程序,因此可以覆盖的方法。但是,我并没有关闭整个应用程序,只是一个阶段。并且没有重写的方法。 谢谢你的帮助。 问题答

  • 如果 Puppeteer 方法无法执行一个请求,就会抛出一个错误。例如,page.waitForSelector(selector[, options]) 选择器如果在给定的时间范围内无法匹配节点,就会失败。 对于某些类型的错误,Puppeteer 使用特定的错误类处理。这些类可以通过 require('puppeteer/Errors') 获得。 支持的类列表: TimeoutError 一个处