Java找不到方法符号

标签 java javafx lombok

我试图从 Controller.java 的 connectEvent 方法内部访问一个方法,它给我错误:

Java: cannot find symbol
symbol: method getConnection()
location: variable main of type sample.Main

我是不是忽略了什么? 我已经尝试了一切 干杯

Controller .java

    package sample;

import javafx.beans.NamedArg;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventType;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import lombok.Getter;
import lombok.Setter;

public class Controller{

    @Getter
    private Main main;

    public Controller(Main main){
        this.main = main;
    }

    //FXML to Java Links

    @FXML
    @Getter
    private Button connectButton;

    @FXML
    @Getter
    private TextArea passwordText;

    @FXML
    @Getter
    private TextArea ipText;

    @FXML
    @Getter
    private TextArea usernameText;


    //FXML linked methods

    /**
     * Called when user tries to connect using supplied information
     */

    @FXML
    public void connectEvent(ActionEvent event){
        main.getConnection().connect(getUsernameText().getText(), passwordText.getText(), ipText.getText());
    }

}

主.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import lombok.Getter;

public class Main extends Application {

    @Getter
    private Controller controller;

    @Getter
    private Connection connection = new Connection();

    @Override
    public void start(Stage primaryStage) throws Exception{

        FXMLLoader loader = new FXMLLoader(getClass().getResource("Startup.fxml"));
        controller = loader.getController();

        Parent root = loader.load(getClass().getResource("Startup.fxml"));
        primaryStage.setTitle("MCManager");
        primaryStage.setScene(new Scene(root, 850, 600));
        primaryStage.setResizable(false);
        primaryStage.show();

    }


    public static void main(String[] args) {
        launch(args);
    }

}

连接

package sample;

public class Connection {

    public void connect(String username, String password, String ip){

    }

}

最佳答案

在你的 Controller 中你正在调用 main.getConnection()

@FXML
public void connectEvent(ActionEvent event){
    main.getConnection().connect(getUsernameText().getText(), passwordText.getText(), ipText.getText());
}

但是在您的主类中没有getConnection() 方法。

将以下代码放在您的主类中。

public Connection  getConnection(){
 return connection;
}

关于Java找不到方法符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29531451/

相关文章:

java - JSF 2 复合 :actionSource exposing commandButtons in ui:repeat

java - 如何使用android ble接口(interface)作为结构发送uint8和uint32数据

java - 使用 JTextPane 显示部分数据并通过工具提示进行休息

java - 如何处理 JavaFX 节点大小?

compiler-construction - 使用 `lombok` 注释和 Java JDK 8 在内存中编译 Java 类

java - Android - 以编程方式设置警报对话框上的文本颜色列表项

java - 使用 JavaFX 手动触发 CheckComboBox 的下拉菜单

java - 反编译Java项目并编译

java - 如何使用 lombok 制作私有(private) builder() 方法

java - 使用Lombok库,但如何自定义/重写setter方法