Aplikacja JavaFx

0

Witam mam problem mam napisać na zaliczenie aplikację "desktopową" ale mam mały problem. Otóż mam już pomysł na aplikację ale coś nie działa i nie jest w stanie powiedzieć dlaczego. Na moje oko wszystko gra ale dla eclipse nie.

package application;
	
import java.io.IOException;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;


public class Main_tescik extends Application {
	private static Stage primaryStage = null;
	private ObservableList<Employee> employeeData = FXCollections.observableArrayList();
	@Override
	public void start(Stage primaryStage) {
		try {
			Main_tescik.primaryStage = primaryStage;
			FXMLLoader loader = new FXMLLoader();
			loader.setLocation(Main_tescik.class.getResource("RootLayout.fxml"));
			BorderPane rootLayout = (BorderPane) loader.load();
			Scene scene = new Scene(rootLayout);
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Stage getPrimaryStage() {
		return primaryStage;
	}
    public ObservableList<Employee> getEmployeeData() {
        return employeeData;
    }
    public boolean showEmployeeEditDialog(Employee person) {
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(Main_tescik.class.getResource("EmployeeEditDialog.fxml"));
            AnchorPane page = (AnchorPane) loader.load();
            Stage dialogStage = new Stage();
            dialogStage.setTitle("Edit Employee");
            dialogStage.initModality(Modality.WINDOW_MODAL);
            dialogStage.initOwner(primaryStage);
            Scene scene = new Scene(page);
            dialogStage.setScene(scene);


            EmployeeEditDialogController controller = loader.getController();
            controller.setDialogStage(dialogStage);
            controller.setEmployee(person);


            dialogStage.showAndWait();

            return controller.isOkClicked();
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
    public static void showSecondWindow() {
    	 try {
    	 // Load the fxml file and create a new stage for the popup dialog.
    	 FXMLLoader loader = new FXMLLoader();
    	 loader.setLocation(Main_tescik.class.getResource("Demo.fxml"));
    	 BorderPane page = (BorderPane) loader.load();
    	 // Create the dialog Stage.
    	 Stage dialogStage = new Stage();
    	 dialogStage.setTitle("Second Window");
    	 dialogStage.initModality(Modality.WINDOW_MODAL);
    	 dialogStage.initOwner(getPrimaryStage());
    	 Scene scene = new Scene(page);
    	 dialogStage.setScene(scene);
 
    	 dialogStage.showAndWait();
    	 } catch (Exception e) {
    	 e.printStackTrace();
    	 }
    	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}

package application;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

public class myControler {

	@FXML
	private Button button;

	@FXML
	void handleButton(ActionEvent event) {
		try {
		FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("EmployeeOverview.fxml"));
		Parent root1 = (Parent) fxmlLoader.load();
		Stage stage = new Stage();
		stage.setScene(new Scene(root1));  
		stage.show();
		} catch (Exception e) {
			System.out.println("zle");
		}
	}

}

package application;


import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Alert.AlertType;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import application.Main_tescik;
import application.Employee;

public class EmployeeOverviewController {
    @FXML
    private TableView<Employee> personTable;
    @FXML
    private TableColumn<Employee, String> firstNameColumn;
    @FXML
    private TableColumn<Employee, String> lastNameColumn;

    @FXML
    private Label firstNameLabel;
    @FXML
    private Label lastNameLabel;
    @FXML
    private Label streetLabel;
    @FXML
    private Label postalCodeLabel;
    @FXML
    private Label cityLabel;
    @FXML
    private Label birthdayLabel;
    @FXML
    private Label selectionLabel;
    
    @FXML
    private Button newButton;
    @FXML
    private Button editButton;
    @FXML
    private Button deleteButton;
    @FXML
    private Label hire_dateLabel;
    @FXML
    private Label dictionaryLabel;

    // Reference to the main application.
    private Main_tescik mainApp;

    /**
     * The constructor.
     * The constructor is called before the initialize() method.
     */
    public EmployeeOverviewController() {
    }

    /**
     * Initializes the controller class. This method is automatically called
     * after the fxml file has been loaded.
     */
    @FXML
    private void initialize() {
        // Initialize the person table with the two columns.
        firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty());
        lastNameColumn.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty());
        
        // Clear person details.
        showEmployeeDetails(null);

        // Listen for selection changes and show the person details when changed.
        personTable.getSelectionModel().selectedItemProperty().addListener(
                (observable, oldValue, newValue) -> showEmployeeDetails(newValue));
        

        deleteButton.setOnAction(this::handleDeletePerson);
        newButton.setOnAction(this::handleNewPerson);
        editButton.setOnAction(this::handleEditPerson);
        
    }

    /**
     * Is called by the main application to give a reference back to itself.
     * 
     * @param mainApp
     */
    public void setMainApp(Main_tescik mainApp) {
        this.mainApp = mainApp;

        // Add observable list data to the table
        personTable.setItems(mainApp.getEmployeeData());
    }
    
    /**
     * Fills all text fields to show details about the person.
     * If the specified person is null, all text fields are cleared.
     * 
     * @param person the person or null
     */
    private void showEmployeeDetails(Employee person) {
        if (person != null) {
            // Fill the labels with info from the person object.
            firstNameLabel.setText(person.getFirstName());
            lastNameLabel.setText(person.getLastName());
            selectionLabel.setText(person.getSelection());
            streetLabel.setText(person.getStreet());
            postalCodeLabel.setText(Integer.toString(person.getPostalCode()));
            cityLabel.setText(person.getCity());
            birthdayLabel.setText(person.getBirthday().toString());
            hire_dateLabel.setText(person.getHire_Date().toString());
        } else {
            // Person is null, remove all the text.
            firstNameLabel.setText("");
            lastNameLabel.setText("");
            selectionLabel.setText("");
            streetLabel.setText("");
            postalCodeLabel.setText("");
            cityLabel.setText("");
            birthdayLabel.setText("");
            hire_dateLabel.setText("");
        }
    }
    
    /**
     * Called when the user clicks on the delete button.
     */
    @FXML
    private void handleDeletePerson(ActionEvent event) {
        int selectedIndex = personTable.getSelectionModel().getSelectedIndex();
        if (selectedIndex >= 0) {
            personTable.getItems().remove(selectedIndex);
        } else {
            // Nothing selected.
            Alert alert = new Alert(AlertType.WARNING);
            alert.initOwner(mainApp.getPrimaryStage());
            alert.setTitle("No Selection");
            alert.setHeaderText("No Person Selected");
            alert.setContentText("Please select a person in the table.");

            alert.showAndWait();
        }
    }
    
    /**
     * Called when the user clicks the new button. Opens a dialog to edit
     * details for a new person.
     */
    @FXML
    private void handleNewPerson(ActionEvent event) {
    	Employee tempPerson = new Employee();
        boolean okClicked = mainApp.showEmployeeEditDialog(tempPerson);
        if (okClicked) {
            mainApp.getEmployeeData().add(tempPerson);
        }
    }
   /* @FXML
    private void handleNewPerson(ActionEvent event) {
		try {
		FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("EmployeeEditDialog.fxml"));
		Parent root1 = (Parent) fxmlLoader.load();
		Stage stage = new Stage();
		stage.setScene(new Scene(root1));  
		stage.show();
		} catch (Exception e) {
			System.out.println("zle");
		}
    }*/

    @FXML
    private void handleEditPerson(ActionEvent event) {
    	Employee selectedPerson = personTable.getSelectionModel().getSelectedItem();
        if (selectedPerson != null) {
            boolean okClicked = mainApp.showEmployeeEditDialog(selectedPerson);
            if (okClicked) {
                showEmployeeDetails(selectedPerson);
            }

        } else {
            // Nothing selected.
            Alert alert = new Alert(AlertType.WARNING);
            alert.initOwner(mainApp.getPrimaryStage());
            alert.setTitle("No Selection");
            alert.setHeaderText("No Person Selected");
            alert.setContentText("Please select a person in the table.");

            alert.showAndWait();
        }
    }    
}

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>

<AnchorPane prefHeight="300.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.EmployeeEditDialogController">
   <children>
      <Label layoutX="24.0" layoutY="14.0" text="Person Dtails">
         <font>
            <Font name="System Bold" size="12.0" />
         </font>
      </Label>
      <GridPane layoutX="24.0" layoutY="53.0" prefHeight="180.0" prefWidth="415.0">
         <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
         </columnConstraints>
         <rowConstraints>
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
         </rowConstraints>
         <children>
            <Label text="First Name" />
            <Label text="Last Name" GridPane.rowIndex="1" />
            <Label text="Street" GridPane.rowIndex="3" />
            <Label text="City" GridPane.rowIndex="4" />
            <Label text="Postal Code" GridPane.rowIndex="5" />
            <Label text="BirthDate" GridPane.rowIndex="6" />
            <TextField fx:id="firstNameField" GridPane.columnIndex="1" />
            <TextField fx:id="lastNameField" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <TextField fx:id="streetField" GridPane.columnIndex="1" GridPane.rowIndex="3" />
            <TextField fx:id="cityField" GridPane.columnIndex="1" GridPane.rowIndex="4" />
            <TextField fx:id="postalCodeField" GridPane.columnIndex="1" GridPane.rowIndex="5" />
            <DatePicker fx:id="birthdayField" prefHeight="25.0" prefWidth="205.0" GridPane.columnIndex="1" GridPane.rowIndex="6" />
            <Label text="Hire Date" GridPane.rowIndex="7" />
            <DatePicker fx:id="hire_dateField" prefHeight="25.0" prefWidth="205.0" GridPane.columnIndex="1" GridPane.rowIndex="7" />
            <Label text="Selection" GridPane.rowIndex="2" />
            <TextField fx:id="selectionField" GridPane.columnIndex="1" GridPane.rowIndex="2" />
         </children>
      </GridPane>
      <ButtonBar layoutX="268.0" layoutY="254.0" prefHeight="40.0" prefWidth="192.0" AnchorPane.bottomAnchor="8.0" AnchorPane.rightAnchor="8.0">
         <buttons>
            <Button fx:id="okButton" mnemonicParsing="false" text="Ok" />
            <Button fx:id="cancelButton" mnemonicParsing="false" text="Cancel" />
         </buttons>
      </ButtonBar>
   </children>
</AnchorPane>

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>

<AnchorPane minHeight="401.0" minWidth="700.0" prefHeight="420.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.EmployeeOverviewController">
   <children>
      <SplitPane dividerPositions="0.29797979797979796" layoutX="51.0" layoutY="14.0" prefHeight="382.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
               <children>
                  <TableView fx:id="personTable" layoutX="-12.0" layoutY="22.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                    <columns>
                      <TableColumn fx:id="firstNameColumn" prefWidth="75.0" text="First Name" />
                      <TableColumn fx:id="lastNameColumn" prefWidth="75.0" text="Last Name" />
                    </columns>
                     <columnResizePolicy>
                        <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
                     </columnResizePolicy>
                  </TableView>
               </children>
            </AnchorPane>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="328.0" prefWidth="417.0">
               <children>
                  <Label layoutX="14.0" layoutY="14.0" text="Person Dtails">
                     <font>
                        <Font name="System Bold" size="12.0" />
                     </font></Label>
                  <GridPane layoutX="14.0" layoutY="43.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0">
                    <columnConstraints>
                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                      <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                    </columnConstraints>
                    <rowConstraints>
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                      <RowConstraints maxHeight="25.0" minHeight="10.0" prefHeight="19.0" vgrow="SOMETIMES" />
                        <RowConstraints maxHeight="41.0" minHeight="10.0" prefHeight="41.0" vgrow="SOMETIMES" />
                      <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
                    </rowConstraints>
                     <children>
                        <Label text="First Name" />
                        <Label text="Last Name" GridPane.rowIndex="1" />
                        <Label text="Street" GridPane.rowIndex="3" />
                        <Label text="City" GridPane.rowIndex="4" />
                        <Label text="Postal Code" GridPane.rowIndex="5" />
                        <Label text="BirthDate" GridPane.rowIndex="6" />
                        <Label fx:id="firstNameLabel" text="Label" GridPane.columnIndex="1" />
                        <Label fx:id="lastNameLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                        <Label fx:id="streetLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="3" />
                        <Label fx:id="cityLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="4" />
                        <Label fx:id="postalCodeLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="5" />
                        <Label fx:id="birthdayLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="6" />
                        <Label text="Selection" GridPane.rowIndex="2" />
                        <Label fx:id="selectionLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="8" />
                        <Label text="HireDate" GridPane.rowIndex="7" />
                        <Label prefHeight="17.0" prefWidth="70.0" GridPane.columnIndex="1" GridPane.rowIndex="7" />
                        <Label fx:id="hire_dateLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="7" />
                        <Label fx:id="selectionLabel" text="Label" GridPane.columnIndex="1" GridPane.rowIndex="2" />
                        <Label fx:id="dictionaryLabel" text="Dictionary" GridPane.rowIndex="8" />
                     </children>
                  </GridPane>
                  <ButtonBar layoutX="154.0" layoutY="244.0" prefHeight="40.0" prefWidth="263.0" AnchorPane.bottomAnchor="8.0" AnchorPane.rightAnchor="8.0">
                    <buttons>
                      <Button fx:id="newButton" mnemonicParsing="false" text="New..." />
                        <Button fx:id="editButton" mnemonicParsing="false" text="Edit..." />
                        <Button fx:id="deleteButton" mnemonicParsing="false" text="Delete" />
                    </buttons>
                  </ButtonBar>
               </children>
            </AnchorPane>
        </items>
      </SplitPane>
   </children>
</AnchorPane>

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane minHeight="400.0" minWidth="600.0" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.myControler">
   <top>
      <MenuBar BorderPane.alignment="CENTER">
        <menus>
          <Menu mnemonicParsing="false" text="File">
            <items>
              <MenuItem mnemonicParsing="false" text="Close" />
            </items>
          </Menu>
          <Menu mnemonicParsing="false" text="Help">
            <items>
              <MenuItem mnemonicParsing="false" text="About" />
            </items>
          </Menu>
        </menus>
      </MenuBar>
   </top>
   <center>
      <Button fx:id="button" mnemonicParsing="false" onAction="#handleButton" text="Button" BorderPane.alignment="CENTER" />
   </center>
</BorderPane>

package application;


import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TextField;
import javafx.stage.Stage;


import application.Employee;

public class EmployeeEditDialogController {

    @FXML
    private TextField firstNameField;
    @FXML
    private TextField lastNameField;
    @FXML
    private TextField streetField;
    @FXML
    private TextField postalCodeField;
    @FXML
    private TextField cityField;
    @FXML
    private TextField selectionField;
    @FXML
    private DatePicker birthdayField;
    @FXML
    private Button okButton;
    @FXML
    private Button cancelButton;
    @FXML
    private DatePicker hire_dateField;

    private Stage dialogStage;
    private Employee person;
    private boolean okClicked = false;

    @FXML
    private void initialize() {
    	okButton.setOnAction(this::handleOk);
    	cancelButton.setOnAction(this::handleCancel);
    }

    /**
     * Sets the stage of this dialog.
     * 
     * @param dialogStage
     */
    public void setDialogStage(Stage dialogStage) {
        this.dialogStage = dialogStage;
    }

    /**
     * Sets the person to be edited in the dialog.
     * 
     * @param person
     */
    public void setEmployee(Employee person) {
        this.person = person;

        firstNameField.setText(person.getFirstName());
        lastNameField.setText(person.getLastName());
        selectionField.setText(person.getSelection());
        streetField.setText(person.getStreet());
        postalCodeField.setText(Integer.toString(person.getPostalCode()));
        cityField.setText(person.getCity());
        birthdayField.setValue(person.getBirthday());
        hire_dateField.setValue(person.getHire_Date());
    }

    /**
     * Returns true if the user clicked OK, false otherwise.
     * 
     * @return
     */
    public boolean isOkClicked() {
        return okClicked;
    }

    /**
     * Called when the user clicks ok.
     */
    private void handleOk(ActionEvent event) {
        if (isInputValid()) {
            person.setFirstName(firstNameField.getText());
            person.setLastName(lastNameField.getText());
            person.setSelection(selectionField.getText());
            person.setStreet(streetField.getText());
            person.setPostalCode(Integer.parseInt(postalCodeField.getText()));
            person.setCity(cityField.getText());
            person.setBirthday(birthdayField.getValue());
            person.setHire_Date(hire_dateField.getValue());

            okClicked = true;
            dialogStage.close();
        }
    }

    /**
     * Called when the user clicks cancel.
     */
    private void handleCancel(ActionEvent event) {
        dialogStage.close();
    }

    /**
     * Validates the user input in the text fields.
     * 
     * @return true if the input is valid
     */
    private boolean isInputValid() {
        String errorMessage = "";

        if (firstNameField.getText() == null || firstNameField.getText().length() == 0) {
            errorMessage += "No valid first name!\n"; 
        }
        if (lastNameField.getText() == null || lastNameField.getText().length() == 0) {
            errorMessage += "No valid last name!\n"; 
        }
        if (selectionField.getText() == null || selectionField.getText().length() == 0) {
            errorMessage += "No valid last name!\n"; 
        }
        if (streetField.getText() == null || streetField.getText().length() == 0) {
            errorMessage += "No valid street!\n"; 
        }

        if (postalCodeField.getText() == null || postalCodeField.getText().length() == 0) {
            errorMessage += "No valid postal code!\n"; 
        } else {
            // try to parse the postal code into an int.
            try {
                Integer.parseInt(postalCodeField.getText());
            } catch (NumberFormatException e) {
                errorMessage += "No valid postal code (must be an integer)!\n"; 
            }
        }

        if (cityField.getText() == null || cityField.getText().length() == 0) {
            errorMessage += "No valid city!\n"; 
        }

        if (birthdayField.getValue() == null ) {
            errorMessage += "No valid birthday!\n";
        }
        if (hire_dateField.getValue() == null ) {
            errorMessage += "No valid hide date!\n";
        }

        if (errorMessage.length() == 0) {
            return true;
        } else {
            // Show the error message.
            Alert alert = new Alert(AlertType.ERROR);
            alert.initOwner(dialogStage);
            alert.setTitle("Invalid Fields");
            alert.setHeaderText("Please correct invalid fields");
            alert.setContentText(errorMessage);

            alert.showAndWait();

            return false;
        }
    }
}

package application;

import java.time.LocalDate;

import application.Employee;

import java.sql.Date;

import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;


public class Employee {

	private Integer employeeID;
	private StringProperty firstName;
	private StringProperty lastName;
	private StringProperty selection;
	private StringProperty street;
	private IntegerProperty postalCode;
	private StringProperty city;
	private ObjectProperty<LocalDate> birthday;
	private ObjectProperty<LocalDate> hire_date;

	private Integer idDictionary;

	/**
	 * Default constructor.
	 */
	public Employee() {
		this.employeeID = new Integer(0);

		this.firstName = new SimpleStringProperty();
		this.lastName = new SimpleStringProperty();
		this.selection = new SimpleStringProperty();

		// Some initial dummy data, just for convenient testing.
		this.street = new SimpleStringProperty();
		this.postalCode = new SimpleIntegerProperty();
		this.city = new SimpleStringProperty();
		this.birthday = new SimpleObjectProperty<LocalDate>();
		this.hire_date = new SimpleObjectProperty<LocalDate>();

		this.idDictionary = null;
	}

	public Integer getPersonID() {
		return employeeID;
	}

	public void setPersonID(Integer personID) {
		this.employeeID = personID;
	}

	public String getFirstName() {
		return firstName.get();
	}

	public void setFirstName(String firstName) {
		this.firstName.set(firstName);
	}

	public StringProperty firstNameProperty() {
		return firstName;
	}

	public String getLastName() {
		return lastName.get();
	}

	public void setLastName(String lastName) {
		this.lastName.set(lastName);
	}

	public StringProperty lastNameProperty() {
		return lastName;
	}

	public String getStreet() {
		return street.get();
	}

	public void setStreet(String street) {
		this.street.set(street);
	}

	public StringProperty streetProperty() {
		return street;
	}

	public int getPostalCode() {
		return postalCode.get();
	}

	public void setPostalCode(int postalCode) {
		this.postalCode.set(postalCode);
	}

	public IntegerProperty postalCodeProperty() {
		return postalCode;
	}

	public String getCity() {
		return city.get();
	}

	public void setCity(String city) {
		this.city.set(city);
	}

	public StringProperty cityProperty() {
		return city;
	}

	public LocalDate getBirthday() {
		return birthday.get();
	}

	public String getBirthdayStr() {
		LocalDate dt = birthday.get();
		if (dt != null) {
			return dt.toString();
		} else {
			return new String("");
		}
	}

	public Date getBirthdaySqlDate() {
		LocalDate dt = birthday.get();
		if (dt != null) {
			return Date.valueOf(dt);
		} else {
			return null;
		}
	}

	public void setBirthday(LocalDate birthday) {
		this.birthday.set(birthday);
	}

	public ObjectProperty<LocalDate> birthdayProperty() {
		return birthday;
	}

	public Integer getIDDictionary() {
		return idDictionary;
	}

	public void setIDDictionary(Integer idDictionary) {
		this.idDictionary = idDictionary;
	}

	public LocalDate getHire_Date() {
		return hire_date.get();
	}

	public String getHire_DateStr() {
		LocalDate dt = hire_date.get();
		if (dt != null) {
			return dt.toString();
		} else {
			return new String("");
		}
	}

	public Date getHire_DateSqlDate() {
		LocalDate dt = hire_date.get();
		if (dt != null) {
			return Date.valueOf(dt);
		} else {
			return null;
		}
	}

	public void setHire_Date(LocalDate hire_date) {
        this.hire_date.set(hire_date);
    }
	public String getSelection() {
		return selection.get();
	}

	public void setSelection(String firstName) {
		this.selection.set(firstName);
	}

	public StringProperty SelectionProperty() {
		return selection;
	}
}


Na razie jest jeden guzik na początku ale w zamyśle ma ich być więcej tylko na razie nie potrafię doprowadzić do działania tego jednego to nie ma sensu robić więcej. Aplikacja ma działać tak że wciskam guzik na RootLayout i przechodzę do EmployeeOverview(do tej pory działa) potem jak kliknę new to otwiera się EmployeeEditDialog i można dodawać dane ale już to n ie działa a ja nie mam pojęcia dlaczego.

Pomocy muszę to zrobić do środy. Tylko bładam bez komentarzy w stylu "tu cos robisz nie optymalnie" albo "to można zrobić lepiej" zależy mi tylko na ty żeby to działało.

0

Tak na szybko to oczywiście w kontrolerze Twoja zmienna mainApp jest nullem.
Metoda setMainApp(...) nie jest wywoływana także nie inicjalizujesz nigdzie mainApp.
Żeby trzecie okienko się odpaliło to zwyczajnie zainicjalizowałem tą zmienną:

private Main_tescik mainApp = new Main_tescik();

Co nie zmienia faktu, że zapewne nie o to Ci chodzi.

  • pewnie wiesz, że kod nie powinien tak wyglądać, ale prawdopodobnie dopiero zaczynasz, także spoko :) trochę poczytasz kodu to sam lepiej będziesz klepał

Daj znać czy potrzebujesz pomocy jeżeli chodzi o funkcjonowanie tej logiki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1