[英]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.