繁体   English   中英

JavaFX:将Label作为子项添加到TextField

[英]JavaFX: Adding a Label as child to a TextField

我想在JavaFX- TextField上面显示一个文本。 设置prompText几乎是我想要的,但对我的用例有一些缺点。 以下代码似乎有效,但将Label添加到TextField的子代中感觉不对。 以下代码是否违反任何JavaFX原则或使用是否安全?

public class MyTextField extends TextField {    
    public MyTextField() {
        Label label = new Label("test");
        this.getChildren().add(label);
    }  
}

基于 :

以下代码是否违反任何JavaFX原则或使用是否安全?

java中,这段代码使用起来并不安全,因为你在构造函数中调用了Overridable方法 ,如果你使用Netbeans或任何智能IDE,它会用"Overridable method call in constructor"警告你,这里问题的描述是:

调用可以被覆盖的方法在构造函数中可能是危险的,因为在调用重写方法的那一刻,对象未完全初始化。

其次,您可以在Region,Group,Containers中添加子节点,但是将子节点添加到控件是不太好的做法,如果需要向TextField添加标签,可以使用ControlFx的 CustomTextField,这个代码示例可能会有帮助为了您的需要:

     Label myLabel=new Label("Hello");
    /*You use a container if you need add many nodes in CustomTextField*/
    //HBox box=new HBox();
    //box.getChildren().add(myLabel);
    CustomTextField customField=new CustomTextField();
    customField.setRight(mylabel);
    //customField.setLeft(mylabel);
    //customField.setRight(box);

或者通过扩展CustomTextField:

//This code is safe and the warning is removing here
public class MyTextField extends CustomTextField {

        public MyTextField() {
            Label label = new Label("test");
            this.setRight(label); 
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM