Auslagerung der Methoden zum Formatieren

This commit is contained in:
Lars Alteköster 2021-11-29 13:19:52 +01:00
parent e25465873b
commit 5378876ff9
13 changed files with 266 additions and 178 deletions

View File

@ -7,10 +7,13 @@
<StackPane prefHeight="800.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.happy_bird.HappyBird" back > <StackPane prefHeight="800.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.happy_bird.HappyBird" back >
<<<<<<< HEAD
=======
<ImageView> <ImageView>
<image> <image>
<Image url="@pics/Background.png"></Image> <Image url="@pics/Background.png"></Image>
</image> </image>
</ImageView> </ImageView>
>>>>>>> 5db5b6bb195a2b7d1296e7d3f9b98d6c75dba2c2
</StackPane> </StackPane>

View File

@ -1,5 +1,9 @@
package com.example.happy_bird; package com.example.happy_bird;
public class HappyBird { import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class HappyBird extends HappyBirdMain {
} }

View File

@ -22,20 +22,46 @@ import java.io.IOException;
public class HappyBirdMain extends Application { public class HappyBirdMain extends Application {
private Pane pane = new Pane();
private Scene scene = new Scene(pane, 800, 700);
private Label nameLabel = new Label("NAME");
private Label acronymLabel = new Label("KÜRZEL");
private Label headline = new Label("HAPPY BIRD");
private Label soundLabel = new Label("SOUND");
private Label labels[] = {nameLabel, acronymLabel, soundLabel};
private Label headlineLabels[] = {headline};
private Button startButton = new Button("START");
private Button highscoresButton = new Button("HIGHSCORES");
private Button settingsButton = new Button("EINSTELLUNGEN");
private Button startGameButton = new Button("SPIEL STARTEN");
private Button menuButton = new Button("ZURÜCK");
private Button[] buttons = {startButton, highscoresButton, settingsButton, startGameButton, menuButton};
private TextField name = new TextField();
private TextField acronym = new TextField();
private TextField inputFields[] = {name, acronym};
private Slider soundSlider = new Slider();
public static void main(String[] args) { public static void main(String[] args) {
launch(args); launch(args);
} }
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
Pane pane = new Pane();
Scene scene = new Scene(pane, 800, 700);
stage.setTitle("Happy Bird"); stage.setTitle("Happy Bird");
stage.setScene(scene); stage.setScene(scene);
//Backgroundimage /**Bild für Hintergrund erstellen:*/
Image image = new Image("file:src/main/resources/com/example/happy_bird/pics/Background.png"); Image image = new Image("file:src/main/resources/com/example/happy_bird/pics/Background.png");
/**Hintergrund erstellen:*/
BackgroundImage backgroundImageImg = new BackgroundImage( BackgroundImage backgroundImageImg = new BackgroundImage(
image, image,
BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT,
@ -44,68 +70,121 @@ public class HappyBirdMain extends Application {
BackgroundSize.DEFAULT BackgroundSize.DEFAULT
); );
/**Hintergrund zu Pane hinzufügen:*/
Background background = new Background(backgroundImageImg); Background background = new Background(backgroundImageImg);
pane.setBackground(background); pane.setBackground(background);
//Headline-Label
Label headline = new Label("Happy Bird");
headline.setPrefSize(300, 75); /**Labels erstellen:*/
headline.setTextAlignment(TextAlignment.CENTER);
headline.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " + /**Labels in Arrays speichern:*/
"-fx-font-size: 35px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" + /**Labels formatieren:*/
"-fx-font-weight: bold;" + labelsFormating(labels, pane);
"-fx-alignment: center;" + headlineFormating(headlineLabels, pane);
"-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;"); /**alle labels an ihre Stelle:*/
int yPositionLabels = 225;
for (Label label : labels) {
label.setLayoutX(275);
label.setLayoutY(yPositionLabels);
yPositionLabels += 150;
}
/**headline an ihre Stelle:*/
headline.setLayoutX(250); headline.setLayoutX(250);
headline.setLayoutY(100); headline.setLayoutY(100);
pane.getChildren().add(headline); /**soundLabel an seine Stelle:*/
soundLabel.setLayoutY(225);
//Buttons:
Button startButton = new Button("START");
Button highscoresButton = new Button("HIGHSCORES");
Button settingsButton = new Button("EINSTELLUNGEN");
Button startGame = new Button("SPIEL STARTEN");
Button buttons[] = {startButton, highscoresButton, settingsButton, startGame};
Button menuButton = new Button("ZURÜCK"); /**Buttons erstellen:*/
menuButton.setStyle("-fx-background-color: #e86000; " +
"-fx-text-fill: #FFFFFF; " +
"-fx-font-size: 20px; " + /**Buttons in Array speichern:*/
"-fx-border-width: 5px;" +
"-fx-border-color: #FFFFFF;" +
"-fx-font-weight: bold;" + /**Buttons formatieren:*/
"-fx-border-radius: 15px;" + buttonsFormating(buttons, pane);
"-fx-background-radius: 20px;");
pane.getChildren().add(menuButton); /**alle Buttons an ihre Stelle:*/
menuButton.setPrefSize(200, 50); int yPositionButtons = 225;
for (Button button : buttons) {
button.setLayoutX(300);
button.setLayoutY(yPositionButtons);
yPositionButtons += 100;
}
/**menuButton an seine Stelle und vorerst ausblenden:*/
menuButton.setLayoutX(575); menuButton.setLayoutX(575);
menuButton.setLayoutY(625); menuButton.setLayoutY(625);
menuButton.setVisible(false); menuButton.setVisible(false);
<<<<<<< HEAD
======= /**startGameButton unsichtbar*/
>>>>>>> 6697cdef8e121846595c7e99f811d1088227faa6 startGameButton.setVisible(false);
startGame.setVisible(false);
//Button buttons[] = {startButton, highscoresButton, settingsButton};
<<<<<<< HEAD
======= /**Textfelder erstellen:*/
>>>>>>> 6697cdef8e121846595c7e99f811d1088227faa6
int yPosition = 225;
/**Textfelder in Array speichern:*/
/**Textfelder formatieren:*/
textfieldsFormating(inputFields, pane);
/**Textfelder an ihre Position:*/
int yPositionInputFields = 290;
for (TextField feld : inputFields) {
feld.setLayoutX(275);
feld.setLayoutY(yPositionInputFields);
yPositionInputFields += 150;
}
/**SoundSlider erstellen:*/
/**SoundSlicer anpassen:*/
soundSliderFormating(soundSlider, pane);
/**ClickEvents:*/
startButton.setOnAction(event -> {
startButtonClick();
});
settingsButton.setOnAction(event -> {
settingsButtonClick();
});
highscoresButton.setOnAction(event -> {
highscoresButtonClick();
});
menuButton.setOnAction(event -> {
menuButtonClick();
});
stage.show();
}
/***
* Formatiert alle Buttons und fügt sie der Pane hinzu
* @param buttons ButtonArray mit allen Arrays
* @param pane Pane, auf der die Buttons angezeigt werden
*/
public void buttonsFormating(Button[] buttons, Pane pane) {
for (Button button : buttons) { for (Button button : buttons) {
pane.getChildren().add(button);
button.setPrefSize(200, 50); button.setPrefSize(200, 50);
button.setLayoutX(300);
button.setLayoutY(yPosition);
yPosition += 100;
button.setStyle("-fx-background-color: #e86000; " + button.setStyle("-fx-background-color: #e86000; " +
"-fx-text-fill: #FFFFFF; " + "-fx-text-fill: #FFFFFF; " +
@ -115,33 +194,20 @@ public class HappyBirdMain extends Application {
"-fx-font-weight: bold;" + "-fx-font-weight: bold;" +
"-fx-border-radius: 15px;" + "-fx-border-radius: 15px;" +
"-fx-background-radius: 20px;"); "-fx-background-radius: 20px;");
pane.getChildren().add(button);
} }
}
startGame.setVisible(false); /***
* Formatiert alle kleinen Labels (keine Überschrift) und fügt sie der Pane hinzu
<<<<<<< HEAD * @param labels LabelArray mit allen Labels
* @param pane Pane, auf der die Labels angezeigt werden
======= */
>>>>>>> 6697cdef8e121846595c7e99f811d1088227faa6 public void labelsFormating(Label[] labels, Pane pane) {
Label nameLabel = new Label("Name:"); for (Label label : labels) {
Label acronymLabel = new Label("Kürzel:");
Label startLabels[] = {nameLabel, acronymLabel};
<<<<<<< HEAD
=======
>>>>>>> 6697cdef8e121846595c7e99f811d1088227faa6
startButton.setOnAction(event -> {
headline.setText("Start");
for (Button button : buttons) {
button.setVisible(false);
menuButton.setVisible(true);
}
});
int yPositionStartLabels = 225;
for (Label label : startLabels) {
label.setPrefSize(250, 50); label.setPrefSize(250, 50);
label.setStyle("-fx-background-color: #DED894; " + label.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " + "-fx-text-fill: #000000; " +
"-fx-font-size: 20px; " + "-fx-font-size: 20px; " +
@ -152,122 +218,137 @@ public class HappyBirdMain extends Application {
"-fx-background-radius: 20px;" + "-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;"); "-fx-border-radius: 15px;");
label.setLayoutX(275);
label.setLayoutY(yPositionStartLabels);
yPositionStartLabels += 150;
pane.getChildren().add(label); pane.getChildren().add(label);
label.setVisible(false); label.setVisible(false);
} }
}
TextField name = new TextField(); /***
TextField acronym = new TextField(); * Formatiert alle Überschriften-Labels und fügt sie der Pane hinzu
* @param labels LabelArray mit Überschriften-Labels
* @param pane Pane, auf der die Labels angezeigt werden
*/
public void headlineFormating(Label[] labels, Pane pane) {
for (Label label : labels) {
label.setPrefSize(300, 75);
label.setTextAlignment(TextAlignment.CENTER);
TextField inputFields[] = {name, acronym}; label.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 35px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-font-weight: bold;" +
"-fx-alignment: center;" +
"-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;");
int yPositionInputFields = 290; pane.getChildren().add(label);
for (TextField feld : inputFields) { }
feld.setPrefSize(250, 50); }
feld.setStyle("-fx-font-size: 20px;" +
/***
* Formatiert alle Textfelder und fügt sie der Pane hinzu
* @param textfields TextFieldArray mit allen Textfeldern
* @param pane Pane, auf der die Textfelder angezeigt werden
*/
public void textfieldsFormating(TextField[] textfields, Pane pane) {
for (TextField field : textfields) {
field.setPrefSize(250, 50);
field.setStyle("-fx-font-size: 20px;" +
"-fx-font-weight: bold;"); "-fx-font-weight: bold;");
feld.setLayoutX(275); pane.getChildren().add(field);
feld.setLayoutY(yPositionInputFields);
yPositionInputFields += 150;
pane.getChildren().add(feld); field.setVisible(false);
}
}
/***
* Formatiert den soundSlider und fügt ihn der Pane hinzu
* @param slider SoundSlider
* @param pane Pane, auf der der Slider angezeigt wird
*/
public void soundSliderFormating(Slider slider, Pane pane) {
slider.setPrefSize(200, 5);
slider.setLayoutX(300);
slider.setLayoutY(295);
pane.getChildren().add(slider);
slider.setVisible(false);
}
/***
* Hauptmenü wird ausgeblendet, Nameneingabe folgt
*/
public void startButtonClick() {
headline.setText("START");
for(Button button : buttons) {
button.setVisible(false);
}
startGameButton.setVisible(true);
menuButton.setVisible(true);
startGameButton.setLayoutY(520);
for(TextField feld : inputFields) {
feld.setVisible(true);
}
for (Label label : labels ) {
label.setVisible(true);
}
soundLabel.setVisible(false);
}
/***
* Hauptmenü wird ausgeblendet, Einstellungen folgen
*/
public void settingsButtonClick() {
headline.setText("EINSTELLUNGEN");
startButton.setVisible(false);
highscoresButton.setVisible(false);
settingsButton.setVisible(false);
menuButton.setVisible(true);
soundSlider.setVisible(true);
soundLabel.setVisible(true);
}
/***
* Hauptmenü wird ausgeblendet, Highscores folgen
*/
public void highscoresButtonClick() {
headline.setText("HIGHSCORES");
startButton.setVisible(false);
highscoresButton.setVisible(false);
settingsButton.setVisible(false);
menuButton.setVisible(true);
}
/***
* Nameneingabe, Einstellungen und Highscores werden ausgeblendet
* Erneutes Anzeigen des Hauptmenüs
*/
public void menuButtonClick() {
headline.setText("HAPPY BIRD");
startButton.setVisible(true);
highscoresButton.setVisible(true);
settingsButton.setVisible(true);
menuButton.setVisible(false);
soundSlider.setVisible(false);
soundLabel.setVisible(false);
startGameButton.setVisible(false);
for(TextField feld : inputFields) {
feld.setVisible(false); feld.setVisible(false);
} }
for (Label label : labels ) {
startButton.setOnAction(event -> { label.setVisible(false);
headline.setText("Start"); }
for(Button button : buttons) {
button.setVisible(false);
}
startGame.setVisible(true);
menuButton.setVisible(true);
startGame.setLayoutY(520);
for(TextField feld : inputFields) {
feld.setVisible(true);
}
for (Label label : startLabels )
{
label.setVisible(true);
}
});
//startGame.setOnAction(event -> {});
//startButton.setOnAction(event -> {});
//Slider:
Slider soundSlider = new Slider();
pane.getChildren().add(soundSlider);
soundSlider.setPrefSize(200, 5);
soundSlider.setLayoutX(300);
soundSlider.setLayoutY(295);
soundSlider.setVisible(false);
Label soundLabel = new Label("SOUND");
soundLabel.setPrefSize(200, 55);
soundLabel.setTextAlignment(TextAlignment.CENTER);
soundLabel.setStyle("-fx-background-color: #DED894; " +
"-fx-text-fill: #000000; " +
"-fx-font-size: 20px; " +
"-fx-border-width: 5px;" +
"-fx-border-color: #543847;" +
"-fx-font-weight: bold;" +
"-fx-alignment: center;" +
"-fx-background-radius: 20px;" +
"-fx-border-radius: 15px;");
soundLabel.setLayoutX(300);
soundLabel.setLayoutY(225);
pane.getChildren().add(soundLabel);
soundLabel.setVisible(false);
settingsButton.setOnAction(event -> {
headline.setText("EINSTELLUNGEN");
startButton.setVisible(false);
highscoresButton.setVisible(false);
settingsButton.setVisible(false);
menuButton.setVisible(true);
soundSlider.setVisible(true);
soundLabel.setVisible(true);
});
highscoresButton.setOnAction(event -> {
headline.setText("HIGHSCORES");
startButton.setVisible(false);
highscoresButton.setVisible(false);
settingsButton.setVisible(false);
menuButton.setVisible(true);
});
menuButton.setOnAction(event -> {
headline.setText("HAPPY BIRD");
startButton.setVisible(true);
highscoresButton.setVisible(true);
settingsButton.setVisible(true);
menuButton.setVisible(false);
soundSlider.setVisible(false);
soundLabel.setVisible(false);
startGame.setVisible(false);
for(TextField feld : inputFields) {
feld.setVisible(false);
}
for (Label label : startLabels )
{
label.setVisible(false);
}
});
stage.show();
} }
} }