我想要在 JavaFX- 上方显示文本TextField。设置prompText几乎是我想要的,但对于我的用例来说有一些缺点。下面的代码似乎可以工作,但是将 a 添加Label到 的子级感觉是错误的TextField。以下代码是否违反任何 JavaFX 原则或者使用安全吗?
public class MyTextField extends TextField {
public MyTextField() {
Label label = new Label("test");
this.getChildren().add(label);
}
}
Run Code Online (Sandbox Code Playgroud)
基于 :
以下代码是否违反任何 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);
Run Code Online (Sandbox Code Playgroud)
或者通过扩展 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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |