web-dev-qa-db-ja.com

javafxでTextFieldとLabelを非表示または非アクティブ化する方法

JavaFXアプリケーションでTextFieldとそのLabelを非表示または非アクティブ化したいと思います。

これは私が試したものです

myTextField.setVisible(false);

、しかしそれは機能していません

Jfx8V2.0.0を搭載したWindows7でEclipseV4.5.0を使用しています

5
David

JavaFXでTextFieldを非表示にすることと非アクティブ化することには違いがあります。

非表示にするには:- visibleプロパティをfalseに設定する必要があります。

考えられる理由は、TextFieldまたはLabelのfx:idの言及をスキップした場合に、それが機能しない理由です。

これを行うには、fx:id = "myTextField"を使用して設定する場合は、fxmlを確認するだけで、作成したのと同じコードが機能し始めます。

同じことがラベルを非表示にするために使用されます。

非アクティブ化するには:- disableという名前のフィールドがあり、そのdisableプロパティをtrueに設定して、フィールドを無効化または非アクティブ化します。

3
Chetan Hallan

次のように、.fxmlファイルのラベルに対してこれを行うこともできます。

<Label layoutX="349.0" layoutY="85.0" 
   text="Label" visible="false" fx:id="actionSuccessLabel"/>

その後、次のようにControllerクラスに表示します。

actionSuccessLabel.setVisible(true);

私はあなたの質問を正しく理解しているかどうかはわかりませんが、私が理解していることに答えようとします。

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);
}
}
1
Seiran

テキストフィールド(javaFX)を非表示/表示したいことを理解しました。通常、テキストフィールドの変数名がfieldであると仮定して、前述したのと同じ方法を使用します。

それを隠すには

field.setVisible(false);

それを使用することを示すために

field.setVisible(true);

そしてそれは私のために常に働きます。

1

次を使用できます。

myTextField.setDisable(true);

特定のアクションのフィールドを無効にします。

1
Niloy Quazi

setVisibleまたは可視プロパティバインディングafter新しい関数を実行することを忘れないでください。

TextField textField = new TextField(field.getValue());
textField.visibleProperty().bind(field.getVisibleProperty());
0
Maxime Durand