Skip to content

Instantly share code, notes, and snippets.

@sedj601
Created July 8, 2024 04:45
Show Gist options
  • Save sedj601/12404aeda0a4aba866c52bc9cf1242ce to your computer and use it in GitHub Desktop.
Save sedj601/12404aeda0a4aba866c52bc9cf1242ce to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import java.util.List;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
public class App extends Application {
List<Label> currentLevels = new ArrayList();
List<Label> levels = new ArrayList();
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Game Levels");
VBox vbox = new VBox(10);
vbox.setAlignment(Pos.CENTER);
vbox.setStyle("-fx-background-color: black");
Label title = new Label("GAME LEVELS");
title.setFont(Font.font("Arial", FontWeight.BOLD, 40));
title.setTextFill(Color.WHITE);
vbox.getChildren().add(title);
for (int i = 0; i < 5; i++) {
Label level = new Label("LEVEL " + (i + 1));
level.setFont(Font.font("Arial", FontWeight.NORMAL, 24));
level.setTextFill(Color.WHITE);
level.setOnMouseClicked(this::handleLevelClick);
levels.add(level);
Label currentLevel = new Label(">");
currentLevel.setFont(Font.font("Arial", FontWeight.BLACK, 24));
currentLevel.setTextFill(Color.BLACK);
currentLevels.add(currentLevel);
vbox.getChildren().add(new HBox(currentLevel, level));
}
//Select the initial level.
selectCurrentLevel(1);
Label back = new Label("BACK");
back.setFont(Font.font("Arial", FontWeight.NORMAL, 24));
back.setTextFill(Color.WHITE);
back.setOnMouseClicked(this::handleBackClick);
vbox.getChildren().add(back);
Scene scene = new Scene(vbox, 400, 600);
scene.setFill(Color.BLACK);
primaryStage.setScene(scene);
primaryStage.show();
}
private void handleLevelClick(MouseEvent event) {
Label source = (Label) event.getSource();
System.out.println(source.getText() + " clicked");
String getDigit = source.getText().replace("LEVEL ", "");
selectCurrentLevel(Integer.parseInt(getDigit));
}
private void handleBackClick(MouseEvent event) {
System.out.println("Back clicked");
}
public static void main(String[] args) {
launch(args);
}
public void selectCurrentLevel(int level)
{
//Set all currentLevel labels to black.
for(int i = 0; i < currentLevels.size(); i++)
{
currentLevels.get(i).setTextFill(Color.BLACK);
}
//Change the currently selected currentLevel label to white.
int index = level - 1;
currentLevels.get(index).setTextFill(Color.WHITE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment