我创建了从VBox类继承的LoginFieldsController自定义控制器。稍后在程序中,我将此控制器用作Button,TextFiled等普通节点。请注意,我只编写纯Java代码,不使用FXML。
问题:是否最好将LoginFieldsController节点声明为LoginFieldsController类的字段,或者将其声明为LoginFieldsController构造函数内部?在构造函数之外,我什么也没做。
换句话说,这样会更好:
public class LoginFieldsController extends VBox {
private TextField loginField;
private TextField passwordField;
public LoginFieldsController( ... ) {
loginField = new TextFeild("Login");
passwordField = new TextFeild("Password");
this.addAll(loginField, passwordField);
...
}
或者那个:
public class LoginFieldsController extends VBox {
//no fields in that class
public LoginFieldsController( ... ) {
TextField loginField = new TextFeild("Login");
TextField passwordField = new TextFeild("Password");
this.addAll(loginField, passwordField);
...
}
答案 0 :(得分:0)
最好将它们保留在构造函数之外,特别是如果您以后需要访问它们(例如,获取它们的当前值)
答案 1 :(得分:0)
我强烈建议在构造函数之外将它们声明为字段。这样,当您需要对它们执行某些操作时,可以使用其他方法来访问它们。如果需要在对象实例化时进行构造,则可以使用构造函数来注入这些字段,也可以让setter在以后进行注入。
考虑以下代码:
Class Example{
public Example(...){
TextField text1 = new TextField();
//some other code
}
public boolean checkData(){
//text1 is not visible here
}
另一方面:
Class Example{
TextField text1;
public Example(...){
text1 = new TextField();
//some other code
}
public boolean checkData(){
//text1 is visible here
}
在旁注中,我只会在 view 部分中使用图形元素(例如您示例中的VBox)(猜测您使用MVC,因为您使用的是控制器),并编写了一个单独的控制器课。