Button/Event wird nicht ausgeführt, was tun?

Vincent N.

Mitglied
Nabend,

ich bin noch ein Anfänger im Bereich programmieren und hatte vor mein erstes Programm zu schreiben. Das Programm soll ein "Case Simulator" zum bekannten Computerspiel "Counter Strike: Global Offensive" sein, in dem Spiel gibt es sogenannte "Cases" die man öffnen kann und aus denen man "Waffen-Skins" bekommt. Mein Simulator soll dies simulieren, davon gibt es zwar schon dutzende doch ich ich wollte dieses Programm machen, da ich denke dass dies recht gut zum üben ist. Ich habe mir den Code mehr oder weniger "zusammen gebastelt" und mit eingebaut was ich für logisch hielt und glaubte dass dies funktioniert. Ich habe schon das GUI erstellt doch nun passiert nichts wenn ich den eingebauten Button drücke. Ich hoffe mir kann jemand helfen und sagen was ich falsch gemacht habe. Die meisten Bestandteile des Codes habe ich mir "ergoogelt" (wenn man es so sagen kann) und versucht anzupassen, danke für jede Hilfe!

Hauptcode:
Java:
package application;

import javafx.event.ActionEvent;

import java.util.Random;
import java.util.logging.Logger;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;


public class Main extends Application implements EventHandler<ActionEvent> {

    //Button button;
    int i = 0;
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(10543);

    Image blue = new Image(getClass().getResourceAsStream("blue.png"));
    Image purple = new Image(getClass().getResourceAsStream("purple.png"));
    Image pink = new Image(getClass().getResourceAsStream("pink.png"));
    Image red = new Image(getClass().getResourceAsStream("red.png"));
    Image knife = new Image(getClass().getResourceAsStream("knife.png"));
    Image bluest = new Image(getClass().getResourceAsStream("bluest.png"));
    Image purplest = new Image(getClass().getResourceAsStream("purplest.png"));
    Image pinkst = new Image(getClass().getResourceAsStream("pinkst.png"));
    Image redst = new Image(getClass().getResourceAsStream("redst.png"));
    Image knifest = new Image(getClass().getResourceAsStream("knifest.png"));



    @FXML
    public Button Button1;
    public Label LabelArea1;
    public TextArea TextArea1;

    @Override
    public void start(Stage primaryStage) {
        try {


            SplitPane page = (SplitPane) FXMLLoader.load(Main.class.getResource("casesimulator.fxml"));
            Scene scene = new Scene(page);
            primaryStage.setScene(scene);
            primaryStage.setTitle("CS:GO Case Simulator by ViRazY");
            primaryStage.show();

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void handle(ActionEvent event) {
        if(event.getSource() == Button1);{


            Random randomGenerator = new Random();
            int randomInt = randomGenerator.nextInt(10543);


            if(randomInt<7847 || randomInt==7847){
                TextArea1.appendText("Du hast einen Blue-Skin gezogen!");
                System.out.println("Du hast einen Blue-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("blue.png"));
                }
            if(randomInt>8370 && randomInt<7848 || randomInt==8370 || randomInt==7848){
                TextArea1.appendText("Du hast einen StatTrak Blue-Skin gezogen!");
                System.out.println("Du hast einen StatTrak Blue-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("bluest.png"));
                }
            if(randomInt>8371 && randomInt<9944 || randomInt==8371 || randomInt==9944){
                TextArea1.appendText("Du hast einen Purple-Skin gezogen!");
                System.out.println("Du hast einen Purple-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("purple.png"));
                }
            if(randomInt>9945 && randomInt<10120 || randomInt==9945 || randomInt==10120){
                TextArea1.appendText("Du hast einen StatTrak Purple-Skin gezogen!");
                System.out.println("Du hast einen StatTrak Purple-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("purplest.png"));
                }
            if(randomInt>10121 && randomInt<10403 || randomInt==10121 || randomInt==10403){
                TextArea1.appendText("Du hast einen Pink-Skin gezogen!");
                System.out.println("Du hast einen Pink-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("pink.png"));
                }
            if(randomInt>10404 && randomInt<10454 || randomInt==10404 || randomInt==10454){
                TextArea1.appendText("Du hast einen StatTrak Pink-Skin gezogen!");
                System.out.println("Du hast einen StatTrak Pink-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("pinkst.png"));
                }
            if(randomInt>10455 && randomInt<10513 || randomInt==10455 || randomInt==10513){
                TextArea1.appendText("Du hast einen Red-Skin gezogen!");
                System.out.println("Du hast einen Red-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("red.png"));
                }
            if(randomInt>10514 && randomInt<10518 || randomInt==10514 || randomInt==10518){
                TextArea1.appendText("Du hast einen StatTrak Red-Skin gezogen!");
                System.out.println("Du hast einen StatTrak Red-Skin gezogen!");
                LabelArea1.setGraphic(new ImageView("redst.png"));
                }
            if(randomInt>10519 && randomInt<10541 || randomInt==10519 || randomInt==10541){
                TextArea1.appendText("Du hast eine Knife gezogen!");
                System.out.println("Du hast ein Knife gezogen!");
                LabelArea1.setGraphic(new ImageView("knife.png"));
                }
            if(randomInt>10542 || randomInt==10542){
                TextArea1.appendText("Du hast eine StatTrak Knife gezogen!" + "\n");
                System.out.println("Du hast eine StatTrak Knife gezogen!");
                LabelArea1.setGraphic(new ImageView("knifest.png"));
                }



        }

    }


}

FXML Code:
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.scene.effect.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<SplitPane dividerPositions="0.6381909547738693" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" orientation="VERTICAL" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
  <items>
    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
         <effect>
            <Glow />
         </effect>
         <children>
            <TextArea fx:id="TextArea1" editable="false" layoutY="200.0" prefHeight="57.0" prefWidth="598.0" />
            <Label fx:id="LabelArea1" layoutX="41.0" layoutY="25.0" prefHeight="157.0" prefWidth="543.0" />
         </children></AnchorPane>
    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="0.0" prefWidth="598.0">
         <children>
            <Button fx:id="Button1" layoutX="99.0" layoutY="30.0" mnemonicParsing="false" prefHeight="81.0" prefWidth="400.0" text="OPEN CASE" AnchorPane.topAnchor="30.0">
               <font>
                  <Font name="Aharoni Bold" size="42.0" />
               </font>
            </Button>
         </children></AnchorPane>
  </items>
</SplitPane>

Die .png Dateien sind ganz normale Bilder die die selbe Größe haben wie das Label "LabelArea1".

~Vincent
 
Schaue dir deinen Code noch mal genau an, vor allem dein if-statement.
Java:
    @Override
    public void handle(ActionEvent event) {
        if(event.getSource() == Button1);{
        }
    }

Falls du nichts bemerkst:
if(event.getSource() == Button1);
 
Danke!
Dies war aber leider nicht das einzige Problem, ich habe vergessen einen Controller-Class zu erstellen, also habe ich den Code komplett neu geschrieben und vorerst einen Text anstatt eines Bildes verwendet:

Main:
Code:
package application;

import javafx.event.ActionEvent;

import java.util.Random;
import java.util.logging.Logger;

import javafx.fxml.FXMLLoader;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.Button;

import java.util.Map;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import java.util.HashMap;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.SplitPane;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;


public class Main extends Application implements EventHandler<ActionEvent> {

    //Button button;
    //Random randomGenerator = new Random();
    //int randomInt = randomGenerator.nextInt(10543);

    int i = 0;

    /*

    useless

    Image blue = new Image(getClass().getResourceAsStream("blue.png"));
    Image purple = new Image(getClass().getResourceAsStream("purple.png"));
    Image pink = new Image(getClass().getResourceAsStream("pink.png"));
    Image red = new Image(getClass().getResourceAsStream("red.png"));
    Image knife = new Image(getClass().getResourceAsStream("knife.png"));
    Image bluest = new Image(getClass().getResourceAsStream("bluest.png"));
    Image purplest = new Image(getClass().getResourceAsStream("purplest.png"));
    Image pinkst = new Image(getClass().getResourceAsStream("pinkst.png"));
    Image redst = new Image(getClass().getResourceAsStream("redst.png"));
    Image knifest = new Image(getClass().getResourceAsStream("knifest.png"));

    */


    private Stage primaryStage;

    @Override
    public void start(Stage primaryStage)  {

        this.primaryStage = primaryStage;
        casesimulator();


        primaryStage.setTitle("CS:GO Case Simulator by ViRazY");

    }

    public void casesimulator() {
        try {

            FXMLLoader loader = new FXMLLoader(Main.class.getResource("casesimulator.fxml"));

            AnchorPane pane = loader.load();

            primaryStage.setMinHeight(397);
            primaryStage.setMinWidth(634);

            CSController CSController = loader.getController();
            CSController.setMain(this);


            Scene scene = new Scene(pane);
            primaryStage.setScene(scene);
            primaryStage.show();




        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    @Override
    public void handle(ActionEvent event) {
        // TODO Auto-generated method stub

    }



}

Controller-Class (CSController.java):
Code:
package application;

import java.util.Random;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.TextAlignment;



public class CSController {

    int i = 0;

    /*

    useless

    Image blue = new Image(getClass().getResourceAsStream("blue.png"));
    Image purple = new Image(getClass().getResourceAsStream("purple.png"));
    Image pink = new Image(getClass().getResourceAsStream("pink.png"));
    Image red = new Image(getClass().getResourceAsStream("red.png"));
    Image knife = new Image(getClass().getResourceAsStream("knife.png"));
    Image bluest = new Image(getClass().getResourceAsStream("bluest.png"));
    Image purplest = new Image(getClass().getResourceAsStream("purplest.png"));
    Image pinkst = new Image(getClass().getResourceAsStream("pinkst.png"));
    Image redst = new Image(getClass().getResourceAsStream("redst.png"));
    Image knifest = new Image(getClass().getResourceAsStream("knifest.png"));

    */



    // Views
    @FXML private Label LabelArea1;
    @FXML private TextArea TextArea1;
    @FXML private Button Button1;




    public Main main;
    public void setMain(Main main) {
        this.main = main;
    }

    @FXML
    public void handleOpen(ActionEvent event) {
        if(event.getSource() == Button1){


            Random randomGenerator = new Random();
            int randomInt = randomGenerator.nextInt(10543);
            i++;


            if(randomInt<7847 || randomInt==7847){
                TextArea1.appendText(i + ": Du hast einen Blue-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen Blue-Skin gezogen!");
                LabelArea1.setText("YOU GOT BLUE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.BLUE);
                }
            if(randomInt>8370 && randomInt<7848 || randomInt==8370 || randomInt==7848){
                TextArea1.appendText(i + ": Du hast einen StatTrak Blue-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen StatTrak Blue-Skin gezogen!");
                LabelArea1.setText("YOU GOT ST. BLUE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.BLUE);
                }
            if(randomInt>8371 && randomInt<9944 || randomInt==8371 || randomInt==9944){
                TextArea1.appendText(i + ": Du hast einen Purple-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen Purple-Skin gezogen!");
                LabelArea1.setText("YOU GOT PURPLE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.PURPLE);
                }
            if(randomInt>9945 && randomInt<10120 || randomInt==9945 || randomInt==10120){
                TextArea1.appendText(i + ": Du hast einen StatTrak Purple-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen StatTrak Purple-Skin gezogen!");
                LabelArea1.setText("YOU GOT ST. PURPLE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.PURPLE);
                }
            if(randomInt>10121 && randomInt<10403 || randomInt==10121 || randomInt==10403){
                TextArea1.appendText(i + ": Du hast einen Pink-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen Pink-Skin gezogen!");
                LabelArea1.setText("YOU GOT PINK");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.MAGENTA);
                }
            if(randomInt>10404 && randomInt<10454 || randomInt==10404 || randomInt==10454){
                TextArea1.appendText(i + ": Du hast einen StatTrak Pink-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen StatTrak Pink-Skin gezogen!");
                LabelArea1.setText("YOU GOT ST. PINK");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.MAGENTA);
                }
            if(randomInt>10455 && randomInt<10513 || randomInt==10455 || randomInt==10513){
                TextArea1.appendText(i + ": Du hast einen Red-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen Red-Skin gezogen!");
                LabelArea1.setText("YOU GOT RED");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.RED);
                }
            if(randomInt>10514 && randomInt<10518 || randomInt==10514 || randomInt==10518){
                TextArea1.appendText(i + ": Du hast einen StatTrak Red-Skin gezogen!" + "\n");
                System.out.println(i + ": Du hast einen StatTrak Red-Skin gezogen!");
                LabelArea1.setText("YOU GOT ST. RED");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.RED);
                }
            if(randomInt>10519 && randomInt<10541 || randomInt==10519 || randomInt==10541){
                TextArea1.appendText(i + ": Du hast eine Knife gezogen!" + "\n");
                System.out.println(i + ": Du hast ein Knife gezogen!");
                LabelArea1.setText("YOU GOT KNIFE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.GOLD);
                }
            if(randomInt>10542 || randomInt==10542){
                TextArea1.appendText(i + ": Du hast eine StatTrak Knife gezogen!" + "\n");
                System.out.println(i + ": Du hast eine StatTrak Knife gezogen!");
                LabelArea1.setText("YOU GOT ST. KNIFE");
                LabelArea1.setFont(Font.font("Aharoni Bold",55 ));
                LabelArea1.setTextFill(Color.GOLD);
                }



        }



    }

}

Und zu guter letzt die fxml Datei (casesimulator.fxml):
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.scene.effect.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="397.0" prefWidth="634.0" maxHeight="397.0" maxWidth="634.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.CSController">
   <effect>
      <Glow />
   </effect>
   <children>
      <TextArea fx:id="TextArea1" editable="false" layoutX="18.0" layoutY="199.0" prefHeight="65.0" prefWidth="598.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
      <Label fx:id="LabelArea1" layoutX="46.0" layoutY="26.0" prefHeight="157.0" prefWidth="543.0" AnchorPane.bottomAnchor="214.0" AnchorPane.leftAnchor="45.0" AnchorPane.rightAnchor="45.0" AnchorPane.topAnchor="26.0" />
      <Button fx:id="Button1" layoutX="100.0" layoutY="285.0" mnemonicParsing="false" onAction="#handleOpen" prefHeight="81.0" prefWidth="400.0" text="OPEN CASE" AnchorPane.bottomAnchor="31.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="100.0" AnchorPane.topAnchor="285.0">
         <font>
            <Font name="Aharoni Bold" size="42.0" />
         </font>
      </Button>
   </children>
</AnchorPane>

Dies ist mein erstes Java-Projekt und ich hätte gerne Feetback wie mir das gelungen ist und auch gerne ein paar Tipps, darüber hinaus bin ich erst 15 Jahre alt und muss noch viel lernen! 🙂

~Vincent
 

Zurück
Oben