Created
July 8, 2024 04:45
-
-
Save sedj601/12404aeda0a4aba866c52bc9cf1242ce to your computer and use it in GitHub Desktop.
StackOverflow Question - https://stackoverflow.com/q/78717609/2423906
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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