我正在构建一个JavaFX表单。我编写了一个InputForm类,用于表示表单的第一页;理想情况下,在Application子类中调用InputForm()构造函数时,将初始化表单的Scene,GridPane对象以及字段和标签节点。 CallRecord的代码片段(应用程序子类):
InputForm inputForm = new InputForm();
inputForm.input_1_labelString = "Name: ";
inputForm.input_1_errorString = "Please provide a name";
inputForm.input_2_labelString = "Company: ";
inputForm.input_2_errorString = "Please provide a company";
inputForm.input_3_labelString = "Issue: ";
inputForm.input_3_errorString = "Please provide a brief description of issue";
我遇到的问题是,当我的类的inputForm实例构造在上面时,构造函数似乎没有被调用。发生了什么是运行应用程序时窗口显示为空白。下面是InputForm类的代码块。似乎应用程序线程中无法识别Label和Text对象的代码。我对Java很新,所以我可能完全误解了类构造函数的用途。我很欣赏任何见解。
public class InputForm {
//CLASS CONSTRUCTS SCENE AND GRIDPANE WITH CHILDREN NODES
//QUESTION LABEL STRINGS TO BE SET IN APPLICATION CLASS
GridPane inputGrid = new GridPane();
Scene inputScreen = new Scene(inputGrid, 500, 300);
//text strings for field labels, error messages
String input_1_labelString;
String input_1_errorString;
String input_2_labelString;
String input_2_errorString;
String input_3_labelString;
String input_3_errorString;
Button submit = new Button("Submit");
HBox hbSubmit= new HBox(10);
public void InputForm() {
//question label and field nodes
TextField input_1 = new TextField();
Label input_1_label = new Label(input_1_labelString);
Text input_1_error = new Text(input_1_labelString);
TextField input_2 = new TextField();
Label input_2_label = new Label(input_2_labelString);
Text input_2_error = new Text(input_2_labelString);
TextArea input_3 = new TextArea();
Label input_3_label = new Label(input_3_labelString);
Text input_3_error = new Text(input_3_labelString);
//adding nodes to inputGrid
inputGrid.addRow(1, input_1_label, input_1);
inputGrid.addRow(2, input_2_label, input_2);
inputGrid.addRow(3, input_3_label, input_3);
inputGrid.addRow(4, hbSubmit);
hbSubmit.getChildren().add(submit);
hbSubmit.setAlignment(Pos.BOTTOM_RIGHT);
}
}
答案 0 :(得分:0)
您的构造函数在名称前面有一个void,而不是方法的构造函数。这是错误的,因为构造函数没有任何类型的返回类型。在这种情况下,你有一个名为“InputForm”的方法,你的类将调用默认构造函数,它是隐藏的和空的..删除构造函数名称前面的单词void,你的构造函数应该是这样的 public InputForm() { 这里有些代码... }
注意,构造函数名称前面没有返回类型!!