首页 > 解决方案 > 如何将 String 转换为 TextField、javaFX。从孩子班

问题描述

我想为 Faculty 类(FacultyApp 的子类)创建一个对象,我可以在其中输入一些值

错误:不兼容的类型:字符串无法转换为 TextField Faculty Faculty = new Faculty(" ", " ", " ");

FXMLDocumentController

公共类 FXMLDocumentController 实现 Initializable {

private Label label;
@FXML
private TextField employeeName;
@FXML
private TextField employeeTitle;
@FXML
private TextField emailAddress;
@FXML
private Button SaveButton;




@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    
public void setNAME(TextField employeeName) {
     employeeName.getText();    
}
public void setADDRESS(TextField emailAddress) {
    emailAddress.getText();
}
public void setTITLE(TextField employeeTitle) {

employeeTitle.getText();
}

@FXML
private void saveInfo(ActionEvent event) {
    Faculty faculty = new Faculty(" ", " ", " ");
    String textField = new TextField().toString();
    faculty.setNAME(employeeName);
    faculty.setADDRESS(emailAddress);
    faculty.setTITLE(employeeTitle);
    
    String message = "YOUR INPUT HAS BEEN SAVED";
    Alert a = new Alert(AlertType.INFORMATION); 
    a.setContentText(message +"\nEmployee Name: "+employeeName +"\nEmployee Title: "+ employeeTitle +"\nEmail Address: " + emailAddress);
    a.show();  
    
}

}

childClass from MainClass

public class Faculty extends FacultyApp{ private TextField title, name, address;

public Faculty (TextField employeeName, TextField emailAddress, TextField employeeTitle){
    title = employeeTitle;
    name = employeeName;
    address = emailAddress;
}

public void setNAME(TextField employeeName) {
    name = employeeName;
}
public TextField  getNAME(){
    return name;
}
public void setADDRESS(TextField emailAddress) {
    address = emailAddress;
}
public TextField getADDRESS(){
    return address;
}

public void setTITLE(TextField employeeTitle) {
    title = employeeTitle;
}
public TextField getTITLE(){
    return title;
}

}

标签: javajavafxnetbeansscenebuilder

解决方案


您的Faculty类的构造函数需要 3 个类型的参数TextField,但您试图传递 3 个String对象。

既然你使用了setter,为什么不删除当前的构造函数并Faculty使用默认构造函数创建一个新的对象呢?

所以从Faculty类中删除它:

public Faculty (TextField employeeName, TextField emailAddress, TextField employeeTitle){
    title = employeeTitle;
    name = employeeName;
    address = emailAddress;
}

而在FXMLDocumentController变化中

Faculty faculty = new Faculty(" ", " ", " ");

进入

Faculty faculty = new Faculty();

推荐阅读