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

方法中创建的对象不可用

皇甫乐
2023-03-14

我是第一次在学校项目中使用JavaFX,所以很可能我做了一些明显错误的事情。

在我的controller类中,我有一个方法(customerSU),它创建了一个新的Customer和Cleast对象,我使用这些新的Customer和Cleast对象的其他方法有一个错误“无法解析符号”Cust1“。

package sample;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import javax.swing.*;
import java.io.IOException;

public class Controller {

 @FXML
 Button btn1Home, btn2Home, btn1SHome, btn1THome, btnStudentSU, btn1SHHome, btnBookLesson, btnAttendLesson, btnCancelLessons;

public void homeToSHome() throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("StudentSignIn.fxml"));

    Stage window = (Stage) btn1Home.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

 public void homeToTHome() throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("TutorSignIn.fxml"));

    Stage window = (Stage) btn2Home.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

public void SHomeToHome() throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Home.fxml"));

    Stage window = (Stage) btn1SHome.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

public void THomeToHome() throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Home.fxml"));

    Stage window = (Stage) btn1THome.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

public void SHHomeToHome()throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Home.fxml"));

    Stage window = (Stage) btn1SHHome.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

public void customerSU() throws IOException {
    Customer cust1 = new Customer(SUFirstName.getText(), SUSurname.getText(), SUEmail.getText());
    Lesson lesson1 = new Lesson();


    Parent root = FXMLLoader.load(getClass().getResource("StudentHome.fxml"));

    Stage window = (Stage) btnStudentSU.getScene().getWindow();
    window.setScene(new Scene(root, 600, 400));
}

public void bookLesson() throws IOException {
    String response;
    response = JOptionPane.showInputDialog("Please enter the name of the lesson you wish to sign up for.");

    lesson1.BookALesson(cust1, response);
}

public void attendLesson() throws  IOException {
    lesson1.attendALesson();
}

public void customerLessonDetails() throws IOException {
    lesson1.lessonDetails();
}

public void cancelLessons() throws IOException {
    lesson1.cancelLessons();
}
}

谢谢你的帮助!

共有1个答案

宰父君昊
2023-03-14

正如我在评论中提到的,为什么这不起作用,这里有一个解决方案。在BookLesson()方法中创建一个Customer实例,以便它能够识别您创建的实例

Customer cust1 = new Customer(SUFirstName.getText(), SUSurname.getText(), SUEmail.getText());

方法

public void bookLesson() throws IOException {
        String response;
        Customer cust1 = new Customer(SUFirstName.getText(), SUSurname.getText(), SUEmail.getText());
        Lesson lesson1 = new Lesson();
        response = JOptionPane.showInputDialog("Please enter the name of the lesson you wish to sign up for.");

        lesson1.BookALesson(cust1, response);
    }
 类似资料:
  • 我可以使用Powermock中的,但我想知道Spock有没有办法做到这一点。

  • 我正在使用JAXB从XSD文件创建Java对象。我正在创建不可变包装器来隐藏由JAXB生成的对象(之前我更新了JAXB对象,以实现不可变接口并将接口返回给客户机。但意识到改变自动生成的类是不好的,因此使用包装器) 目前,我正在将这些不可变的包装返回到客户端应用程序。是否有任何选项,使自动生成的类将是不可变的,并避免创建不可变包装器的额外工作。任何其他方法都是鼓励的。 谢谢

  • 本文向大家介绍js创建对象的方法汇总,包括了js创建对象的方法汇总的使用技巧和注意事项,需要的朋友参考一下 js一个有三种方法创建对象,这里做一个总结. 1.对象直接量 所谓对象直接量,可以看做是一副映射表,这个方法也是最直接的一个方法,个人比较建议, 有的人可能会发现,这里的键值名怎么没有引号”“,好细心,其实这个引号(单引双引号,js一样)加不加都行,但是个人建议加上,为什么能,因为加上之后,

  • 本文向大家介绍javascript创建对象的3种方法,包括了javascript创建对象的3种方法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了js创建对象的多种方法,分享个方法的优劣,具体内容如下 第一种创建对象的方式: 创建JSON对象 推荐使用的场合: 作为函数的参数,临时只用一次的场景。比如设置函数原型对象。 第二种创建对象的方式: 创建一个Object对象 以上两种创建对象方

  • 本文向大家介绍Java创建对象的几种方法,包括了Java创建对象的几种方法的使用技巧和注意事项,需要的朋友参考一下 有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用new创建 这是最常用的一种。如: Book book = new Book(); 示

  • 问题内容: 为什么第一种方法是正确的,但第二种方法却不正确? 第一种方式: 第二种方式: 在哪里可以找到有关它的更多信息? 问题答案: 没有声明的方法(2),而由类实例创建表达式 返回的匿名类则声明(1)。 使用Java 10的局部变量类型推断()使第二个选项与第一个选项一样有效。