如何使用javafx隐藏或停用TextField和Label

时间:2015-09-08 07:43:09

标签: java javafx textfield fxml

我想在我的JavaFX应用程序中隐藏或停用TextField及其Label

这就是我试过的

myTextField.setVisible(false);

,但它无效

我在Windows 7上使用Eclipse V4.5.0和jfx8 V2.0.0

6 个答案:

答案 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。我建议尝试在运行时动态创建PaneTextField。 以下是如何在运行时创建和使用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的字段。