I am working on making a custom style for the label but when I’m calling it I’m getting the following warning Feb 06, 2021 7:54:12 PM com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged WARNING: Resource “@Field-background” not found. which doesn’t make my code to get the custom CSS effect.
MY Code:
JavaScript
x
public class Tutorial14 extends Application {
Connection conn;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("JavaFX 8 Tutorial 14 - SQLite");
CheckConnection();
// Create transparent stage
primaryStage.initStyle(StageStyle.TRANSPARENT);
Group root = new Group();
Scene scene = new Scene(root, 220, 210, Color.rgb(0, 0, 0, 0));
//Cascading Style Sheet (CSS)
scene.getStylesheets().add(getClass().getResource("../Style.css").toExternalForm());
Color foreground = Color.rgb(255, 255, 255, 0.9);
//Rounded Rectangular where we will add our components
//Rectangular Background
Rectangle background = new Rectangle(220, 210);
background.setX(0);
background.setY(0);
background.setArcHeight(15);
background.setArcWidth(15);
background.setFill(Color.rgb(0, 0, 0, 0.55));
background.setStroke(foreground);
background.setStrokeWidth(1.5);
VBox vBox = new VBox(5);
vBox.setPadding(new Insets(10, 0, 0, 10));
Label label = new Label("Login Status");
//label.setTextFill(Color.WHITESMOKE);
label.setFont(new Font("SanSerif", 20));
TextField userName = new TextField();
userName.setFont(Font.font("SanSerif", 20));
userName.setPromptText("User Name");
userName.getStylesheets().add("@Field-background");
userName.setMaxWidth(200);
PasswordField password = new PasswordField();
password.setFont(Font.font("SanSerif", 20));
password.setPromptText("Password");
password.setMaxWidth(200);
Button button = new Button("Login");
button.setFont(Font.font("SanSerif, 15"));
button.setMaxWidth(200);
password.setOnAction(e -> {
try {
String query = "SELECT * FROM UserTable WHERE UserName = ? and Password = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, userName.getText());
preparedStatement.setString(2, password.getText());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
label.setText("Login Successful");
} else {
label.setText("Login Failed");
}
preparedStatement.close();
resultSet.close();
} catch (Exception e1) {
label.setText("SQL Error");
e1.printStackTrace();
System.out.println(e1);
}
});
userName.setOnAction(e -> {
try {
String query = "SELECT * FROM UserTable WHERE UserName = ? and Password = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, userName.getText());
preparedStatement.setString(2, password.getText());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
label.setText("Login Successful");
} else {
label.setText("Login Failed");
}
preparedStatement.close();
resultSet.close();
} catch (Exception e1) {
label.setText("SQL Error");
e1.printStackTrace();
System.out.println(e1);
}
});
button.setOnAction(e -> {
try {
String query = "SELECT * FROM UserTable WHERE UserName = ? and Password = ?";
preparedStatement = conn.prepareStatement(query);
preparedStatement.setString(1, userName.getText());
preparedStatement.setString(2, password.getText());
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
label.setText("Login Successful");
} else {
label.setText("Login Failed");
}
preparedStatement.close();
resultSet.close();
} catch (Exception e1) {
label.setText("SQL Error");
e1.printStackTrace();
System.out.println(e1);
}
});
vBox.getChildren().addAll(label, userName, password, button);
root.getChildren().addAll(background, vBox);
primaryStage.setScene(scene);
primaryStage.show();
}
public void CheckConnection() {
conn = SqlConnection.DbConnector();
if (conn == null) {
System.out.println("Connection Not Successful");
System.exit(1);
} else {
System.out.println("Connection Successful");
}
}
}
MY CSS
JavaScript
.label {
-fx-text-fill: whitesmoke;
}
.button {
-fx-padding: 10 20 10 20;
-fx-end-margin: 200;
}
.field-background {
-fx-text-fill: black;
-fx-prompt-text-fill: gray;
-fx-highlight-fill: gray;
-fx-highlight-text-fill: black;
-fx-background-color: rgba(255, 255, 255, 0.8);
}
Any Advise.
Advertisement
Answer
Your CSS selector .field-background
is a class selector.
Thus you should be using getStyleClass on the userName
instance.
JavaScript
userName.getStyleClass().add("field-background");