w3resource

Creating a JavaFX form with styled text fields

JavaFx Styling and CSS: Exercise-2 with Solution

Write a JavaFX program that creates a form with text fields. Apply CSS styling to modify the appearance of the text fields, such as changing the border color, background, and text color.

Sample Solution:

JavaFx Code:

// Main.java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Styled Form");

        // Creating text fields
        TextField textField1 = new TextField();
        TextField textField2 = new TextField();
        TextField textField3 = new TextField();

        // Labels for text fields
        Label label1 = new Label("Name:");
        Label label2 = new Label("Email:");
        Label label3 = new Label("Phone:");

        // Creating a VBox layout to hold the form elements
        VBox vbox = new VBox();
        vbox.getChildren().addAll(
                createFormField(label1, textField1),
                createFormField(label2, textField2),
                createFormField(label3, textField3)
        );

        // Create a scene with the VBox layout
        Scene scene = new Scene(vbox, 300, 200);

        // Load CSS file to style the text fields
        scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());

        // Set the scene on the stage and display it
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    // Helper method to create form fields with labels
    private VBox createFormField(Label label, TextField textField) {
        VBox vBox = new VBox();
        vBox.getChildren().addAll(label, textField);
        vBox.getStyleClass().add("form-field");
        return vBox;
    }

    public static void main(String[] args) {
        launch(args);
    }
}

/*styles.css*/
.form-field .text-field {
    -fx-border-color: #4CAF50; /* Green border */
    -fx-background-color: #f2f2f2; /* Light gray background */
    -fx-text-fill: #333333; /* Dark text color */
}

Explanation:

In the exercise above,

  • Setting up the UI: The start method initializes a JavaFX window (Stage) with the title "Styled Form". It creates three text fields (TextField) and three labels (Label) to represent form elements for "Name," "Email," and "Phone."
  • Layout Structure: The form elements are arranged in a vertical box (VBox) layout using the VBox class. The createFormField method pairs each label with its respective text field, creating a structure of labeled input fields.
  • CSS Styling: The styles.css file contains CSS styling for form fields. It specifies a class selector .form-field .text-field to target text fields nested within elements with the class .form-field. This styling includes properties like border color, background color, and text color for the text fields within the form.
  • Scene and Stylesheet: The scene (Scene) is created with the VBox layout, set to a size of 300x200 pixels. The CSS file is loaded into the scene using scene.getStylesheets().add() to apply the specified styles to the text fields within the form.
  • Launching the Application: The main method launches the JavaFX application by calling launch(args).

Sample Output:

JavaFx: Creating a JavaFX form with styled text fields.
JavaFx: Creating a JavaFX form with styled text fields.

Flowchart:

Flowchart: Creating a JavaFX form with styled text fields.

Java Code Editor:

Previous: JavaFX Application with multiple styled buttons.
Next: Customizing JavaFX labels with CSS styling.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/java-exercises/javafx/javafx-styling-and-css-exercise-2.php