簡體   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