我想在我的JavaFX应用程序中隐藏或停用TextField
及其Label
。
这就是我试过的
myTextField.setVisible(false);
,但它无效
我在Windows 7上使用Eclipse V4.5.0和jfx8 V2.0.0
答案 0 :(得分:3)
在JavaFX中隐藏和停用TextField之间存在差异。
隐藏: - 您需要将visible属性设置为false。
可能的原因是,如果您跳过提及TextField或Label的fx:id,那么它在您的情况下不起作用的原因。
这样做只需要通过fxml,如果使用并设置fx:id =" myTextField" ,然后你编写的相同代码将开始工作。
同样用于隐藏任何标签。
要取消激活: - 有一个名为disable的字段,只需将disable属性设置为true即可禁用或停用任何字段。
答案 1 :(得分:1)
我不确定我是否理解你的问题,但我会尽力回答我的理解。
如果您只想停用TextField
,可以使用:
myTextField.setEditable(false);
这不会"隐藏" TextField
它只是不可编辑。
根据您提供的代码,问题可能是静态创建的(在FXML中)TextField
。我建议尝试在运行时动态创建Pane
和TextField
。
以下是如何在运行时创建和使用JavaFX组件的简单示例:
public class ButtonInPane extends Application{
// Override the start method in the Application class
Button btn=new Button("OK");
HBox cont;
TextField myTextField;
public void start(Stage stage1){
Label myLable=new Label("Some Lable");
myTextField=new TextField("Some text");
cont=new HBox();
cont.getChildren().addAll(myLable,myTextField);
Stage stage = new Stage(); //this instead of JFrame
FlowPane pane2 = new FlowPane(); //this instead of JPanel
pane2.getChildren().addAll(btn,cont);
Scene scene2 = new Scene(pane2, 250, 50);
stage.setTitle("Button in a FlowPane"); // Set the stage title
stage.setScene(scene2); // Place the scene in the stage
stage.show(); // Display the stage
stage.setAlwaysOnTop(true);
//set event
setEventActions();
}
private void handlePlayAction() {
cont.setVisible(false);
//OR myTextField.setVisible(false);
}
private void setEventActions() {
this.btn.setOnAction(event -> this.handlePlayAction());
}
public static void main(String[] args)
{ launch(args);
}
}
答案 2 :(得分:1)
我知道你想要隐藏/显示文本字段(javaFX),我通常使用你提到的相同方法 假设文本字段变量名是字段,然后是:
隐藏它使用
field.setVisible(false);
显示使用
field.setVisible(true);
它始终适合我。
答案 3 :(得分:1)
您也可以对.fxml
文件中的标签执行此操作,如下所示:
<Label layoutX="349.0" layoutY="85.0"
text="Label" visible="false" fx:id="actionSuccessLabel"/>
然后在Controller类中显示它,如下所示:
actionSuccessLabel.setVisible(true);
答案 4 :(得分:0)
不要忘记在新功能之后执行 setVisible 或可见属性绑定。
TextField textField = new TextField(field.getValue());
textField.visibleProperty().bind(field.getVisibleProperty());
答案 5 :(得分:0)
您可以使用:
myTextField.setDisable(true);
它将禁用特定Action的字段。