构造函数对象,方法无法识别

时间:2016-01-03 21:50:26

标签: java oop javafx

我正在构建一个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);

        }

    }

1 个答案:

答案 0 :(得分:0)

您的构造函数在名称前面有一个void,而不是方法的构造函数。这是错误的,因为构造函数没有任何类型的返回类型。在这种情况下,你有一个名为“InputForm”的方法,你的类将调用默认构造函数,它是隐藏的和空的..删除构造函数名称前面的单词void,你的构造函数应该是这样的 public InputForm() {    这里有些代码... }

注意,构造函数名称前面没有返回类型!!