0

I have a main scene (BorderPane) in which there are buttons(SetLeft) and I want when I press those Buttons for the Center to change in a different scene. So far, I made a scene for when I press one of the buttons the Center changes (it is located in a subfolder called "forms"):

package meditest.forms;
public class Users_FXMLController implements Initializable {


    @FXML
    private Button deleteBtn;
    @FXML
    private TextField idtxt;
    @FXML
    private TextField usernametxt;
    @FXML
    private TextField passwordtxt;
    @FXML
    private TextField firstnametxt;
    @FXML
    private TextField lastnametxt;
    @FXML
    private ChoiceBox<String> roles;
    @FXML
    private TextField addresstxt;
    @FXML
    private TextField towntxt;
    @FXML
    private TextField phonetxt;
    @FXML
    private TextField afmtxt;
    @FXML
    private TextField amkatxt;
    @FXML
    private TextField emailtxt;
    @FXML
    private TableView<UsersTableContent> dbUserTable;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableId;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableUsername;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTablePassword;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableFirstname;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableLastname;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableRole;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableAddress;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableTown;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTablePhone;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableAfm;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableAmka;
    @FXML
    private TableColumn<UsersTableContent, String> dbUserTableEmail;
    @FXML 
    private TextField search_user;
    @FXML
    private Button refresh;

    ObservableList<UsersTableContent> search = FXCollections.observableArrayList();


    public static ObservableList<UsersTableContent>oblist = FXCollections.observableArrayList();

    @FXML
    public void DeleteBtnStatus(){
        String id = idtxt.getText();
        boolean isDisabled = (id.isEmpty() || id.trim().isEmpty());
        deleteBtn.setDisable(isDisabled);
    }

    @FXML
    private void refresh_button_handler(ActionEvent event) {
        refresh();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
        roles.getItems().add("Admin");
        roles.getItems().add("Apothikarios");
        roles.getItems().add("Dianomeas");
        roles.getItems().add("Logistis");
        roles.getItems().add("Ypalilos"); 

        dbUserTableId.setCellValueFactory(new PropertyValueFactory<>("id"));
        dbUserTableUsername.setCellValueFactory(new PropertyValueFactory<>("username"));
        dbUserTablePassword.setCellValueFactory(new PropertyValueFactory<>("password")); 
        dbUserTableFirstname.setCellValueFactory(new PropertyValueFactory<>("firstname")); 
        dbUserTableLastname.setCellValueFactory(new PropertyValueFactory<>("lastname")); 
        dbUserTableRole.setCellValueFactory(new PropertyValueFactory<>("role")); 
        dbUserTableAddress.setCellValueFactory(new PropertyValueFactory<>("address")); 
        dbUserTableTown.setCellValueFactory(new PropertyValueFactory<>("town")); 
        dbUserTablePhone.setCellValueFactory(new PropertyValueFactory<>("phone")); 
        dbUserTableAfm.setCellValueFactory(new PropertyValueFactory<>("afm")); 
        dbUserTableAmka.setCellValueFactory(new PropertyValueFactory<>("amka")); 
        dbUserTableEmail.setCellValueFactory(new PropertyValueFactory<>("email")); 

        refresh();
    } 

    public void refresh() {

        db database = new db();

        String sql = "SELECT * FROM users ;";
        ResultSet rs = database.SelectQuery(sql);

        oblist.clear();

        try {
            while (rs.next()) {
                //System.out.println(rs.getInt("id") + rs.getString("username") + rs.getString("password"));
                oblist.add(new UsersTableContent(rs.getInt("id"),
                rs.getString("username"),rs.getString("password"),rs.getString("firstname"),
                rs.getString("lastname"),rs.getString("role"),
                rs.getString("address"),rs.getString("town"),rs.getString("phone"),
                rs.getString("afm"),rs.getString("amka"),rs.getString("email")));
            }
        } catch (SQLException ex) {
            Logger.getLogger(Users_FXMLController.class.getName()).log(Level.SEVERE, null, ex);
        }
        dbUserTable.setItems(oblist);
        database.close();
        search_user.textProperty().addListener((observable, oldValue, newValue) -> { 

            search.clear();

            if(newValue.equals("")){
                dbUserTable.setItems(oblist);
            } else{
                String txt = newValue.toLowerCase();
                for(UsersTableContent user:oblist){  

                    if(String.valueOf(user.getId()).equals(txt)){
                        search.add(user);

                        break;
                    } else if(user.getFirstname().contains(txt)||user.getPassword().contains(txt)
                                ||user.getTown().contains(txt)||user.getRole().contains(txt)
                                ||user.getPhone().contains(txt)||user.getUsername().contains(txt)
                                ||user.getLastname().contains(txt)||user.getEmail().contains(txt)
                                ||user.getAddress().contains(txt)||user.getAmka().contains(txt)
                                ||user.getAfm().contains(txt)){ 
                        search.add(user);
                    }  
                }
                dbUserTable.setItems(search);
            }
        });
    }   
}

I also use a different class here for values in a TableView I have in the previous class (it is located in the main folder):

package meditest;


public class UsersTableContent {
    String username,password,firstname,lastname,role,address,town,phone,afm,amka,email;
    int id;
    public UsersTableContent(int id, String username, String password, String firstname, String lastname, String role, String address, String town, String phone, String afm, String amka, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.firstname = firstname;
        this.lastname = lastname;
        this.role = role;
        this.address = address;
        this.town = town;
        this.phone = phone;
        this.afm = afm;
        this.amka = amka;
        this.email = email;
    }
}

But I get the above error and it shows that it appears in the main Controller:

package meditest;
public class FXMLmainController implements Initializable {


    @FXML
    private Label Name_label;
    @FXML
    private Label role_label;
    @FXML
    private Label do_label;
    @FXML
    private Button users_button;
    @FXML
    private Button sales_button;
    @FXML
    private Button medicine_button;
    @FXML
    private Button kalathi_button;
    @FXML
    private Button dianomis_button;
    @FXML
    private Button statistics_button;
    @FXML
    private Button settings_button;
    @FXML
    private Button promitheutes_button;

    @FXML
    private BorderPane main;


    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
    }    

    @FXML
    private void menu_buttons_clicked(ActionEvent event) {
        Button source = (Button) event.getSource();
        change_scene(source.getId());//I get the error for this line

    }



    private void change_scene(String scene_name) {

        Parent secondroot = null;
        try {
            String name = scene_name.substring(0,scene_name.length() -7 );
            System.out.println(".\\forms\\"+name+"_FXML.fxml");

            FXMLLoader loader = new FXMLLoader(getClass().getResource("forms/"+name+"_FXML.fxml"));
            secondroot = loader.load();//and here
            main.setCenter(secondroot);

        } catch (IOException ex) {
            Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}

In case you want the FXML files: users_FXML (it is in the "forms" subfolder with the controller):

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

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?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.layout.VBox?>

<AnchorPane id="AnchorPane" prefHeight="765.0" prefWidth="1052.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meditest.forms.Users_FXMLController">
   <children>
      <VBox prefHeight="589.0" prefWidth="1336.0">
         <children>
            <GridPane alignment="CENTER" hgap="20.0" prefHeight="100.0" prefWidth="962.0" vgap="20.0">
              <columnConstraints>
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
                  <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>
               <children>
                  <Label text="ID Χρήστη:" />
                  <Label text="Username Χρήστη:" GridPane.rowIndex="2" />
                  <Label text="Κωδικός Χρήστη:" GridPane.columnIndex="1" />
                  <Label text="Όνομα Χρήστη:" GridPane.columnIndex="1" GridPane.rowIndex="2" />
                  <Label text="Επίθετο Χρήστη:" GridPane.columnIndex="2" />
                  <Label text="Ρόλος Χρήστη:" GridPane.columnIndex="2" GridPane.rowIndex="2" />
                  <Label text="Διεύθυνση Χρήστη:" GridPane.columnIndex="3" />
                  <Label text="Πόλη Κατοικίας:" GridPane.columnIndex="3" GridPane.rowIndex="2" />
                  <Label text="Τηλέφωνο Χρήστη:" GridPane.columnIndex="4" />
                  <Label text="ΑΦΜ Χρήστη:" GridPane.columnIndex="4" GridPane.rowIndex="2" />
                  <Label text="ΑΜΚΑ Χρήστη:" GridPane.columnIndex="5" />
                  <Label text="Email Χρήστη" GridPane.columnIndex="5" GridPane.rowIndex="2" />
                  <Button alignment="CENTER" disable="true" mnemonicParsing="false" prefHeight="36.0" prefWidth="78.0" text="Εισαγωγή" GridPane.columnIndex="6" GridPane.rowIndex="1">
                     <GridPane.margin>
                        <Insets left="20.0" />
                     </GridPane.margin>
                  </Button>
                  <Button disable="true" mnemonicParsing="false" text="Ενημέρωση" GridPane.columnIndex="6" GridPane.rowIndex="2">
                     <GridPane.margin>
                        <Insets left="20.0" />
                     </GridPane.margin>
                  </Button>
                  <Button fx:id="deleteBtn" disable="true" mnemonicParsing="false" prefHeight="25.0" prefWidth="79.0" text="Διαγραφή" GridPane.columnIndex="6" GridPane.rowIndex="3">
                     <GridPane.margin>
                        <Insets left="20.0" />
                     </GridPane.margin>
                  </Button>
                  <TextField fx:id="idtxt" onAction="#DeleteBtnStatus" onKeyReleased="#DeleteBtnStatus" GridPane.rowIndex="1" />
                  <TextField fx:id="usernametxt" GridPane.rowIndex="3" />
                  <TextField fx:id="passwordtxt" GridPane.columnIndex="1" GridPane.rowIndex="1" />
                  <TextField fx:id="firstnametxt" GridPane.columnIndex="1" GridPane.rowIndex="3" />
                  <TextField fx:id="lastnametxt" GridPane.columnIndex="2" GridPane.rowIndex="1" />
                  <TextField fx:id="addresstxt" GridPane.columnIndex="3" GridPane.rowIndex="1" />
                  <TextField fx:id="towntxt" GridPane.columnIndex="3" GridPane.rowIndex="3" />
                  <TextField fx:id="phonetxt" GridPane.columnIndex="4" GridPane.rowIndex="1" />
                  <TextField fx:id="afmtxt" GridPane.columnIndex="4" GridPane.rowIndex="3" />
                  <TextField fx:id="amkatxt" GridPane.columnIndex="5" GridPane.rowIndex="1" />
                  <TextField fx:id="emailtxt" GridPane.columnIndex="5" GridPane.rowIndex="3" />
                  <ChoiceBox fx:id="roles" prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="3" />
               </children>
               <padding>
                  <Insets bottom="20.0" />
               </padding>
            </GridPane>
            <TextField fx:id="search_user" promptText="Πληκτρολογίστε εδώ αν θέλετε να αναζητήσεται ένα αντικείμενο">
               <VBox.margin>
                  <Insets top="10.0" />
               </VBox.margin>
            </TextField>
            <Button fx:id="refresh" mnemonicParsing="false" onAction="#refresh_button_handler" text="Ανανέωση">
               <VBox.margin>
                  <Insets top="20.0" />
               </VBox.margin>
            </Button>
            <TableView fx:id="dbUserTable" prefHeight="450.0" prefWidth="993.0">
               <columns>
                  <TableColumn fx:id="dbUserTableId" prefWidth="63.0" text="ID" />
                  <TableColumn fx:id="dbUserTableUsername" prefWidth="116.00003051757812" text="Username" />
                  <TableColumn fx:id="dbUserTablePassword" prefWidth="123.0" text="Password" />
                  <TableColumn fx:id="dbUserTableFirstname" prefWidth="104.0" text="Όνομα" />
                  <TableColumn fx:id="dbUserTableLastname" minWidth="1.0" prefWidth="113.0" text="Επίθετο" />
                  <TableColumn fx:id="dbUserTableRole" prefWidth="73.0" text="Ρόλος" />
                  <TableColumn fx:id="dbUserTableAddress" prefWidth="132.0" text="Διεύθυνση" />
                  <TableColumn fx:id="dbUserTableTown" prefWidth="79.0" text="Πόλη" />
                  <TableColumn fx:id="dbUserTablePhone" prefWidth="94.0" text="Τηλέφωνο" />
                  <TableColumn fx:id="dbUserTableAfm" prefWidth="115.0" text="ΑΦΜ" />
                  <TableColumn fx:id="dbUserTableAmka" prefWidth="123.0" text="ΑΜΚΑ" />
                  <TableColumn fx:id="dbUserTableEmail" prefWidth="159.0" text="Email" />
               </columns>
               <VBox.margin>
                  <Insets top="20.0" />
               </VBox.margin>
            </TableView>
         </children>
         <padding>
            <Insets bottom="10.0" left="20.0" right="20.0" top="10.0" />
         </padding>
      </VBox>
   </children>
</AnchorPane>

and FXML main (it is in the main folder with the controller):

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.paint.LinearGradient?>
<?import javafx.scene.paint.Stop?>
<?import javafx.scene.text.Font?>

<AnchorPane id="AnchorPane" prefHeight="690.0" prefWidth="1222.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="meditest.FXMLmainController">
   <children>
      <BorderPane fx:id="main" prefHeight="782.0" prefWidth="1225.0">
         <left>
            <Pane prefHeight="783.0" prefWidth="239.0" style="-fx-background-color: #0099ff;" BorderPane.alignment="CENTER">
               <children>
                  <Pane layoutX="-1.0" layoutY="679.0" prefHeight="55.0" prefWidth="240.0" style="-fx-background-color: #0099ff;">
                     <children>
                        <Label fx:id="Name_label" layoutX="78.0" layoutY="6.0" prefHeight="17.0" prefWidth="111.0" textAlignment="CENTER" textFill="#d01d1d" />
                        <Label fx:id="role_label" layoutX="102.0" layoutY="26.0" textFill="#cd1d1d" />
                     </children>
                  </Pane>
                  <Button fx:id="users_button" layoutX="-7.0" layoutY="63.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Χρήστες" />
                  <Button fx:id="sales_button" layoutX="-7.0" layoutY="139.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Παραγγελίες" />
                  <Button fx:id="medicine_button" layoutX="-7.0" layoutY="215.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Φάρμακα" />
                  <Button fx:id="kalathi_button" layoutX="-7.0" layoutY="291.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Καλάθι" />
                  <Button fx:id="dianomis_button" layoutX="-7.0" layoutY="367.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Διανομης" />
                  <Button fx:id="statistics_button" layoutX="-7.0" layoutY="443.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Στατιστικά" />
                  <Button fx:id="settings_button" layoutX="-7.0" layoutY="519.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Ρυθμίσεις" />
                  <Button fx:id="promitheutes_button" layoutX="-7.0" layoutY="595.0" mnemonicParsing="false" onAction="#menu_buttons_clicked" prefHeight="76.0" prefWidth="246.0" styleClass="button1" stylesheets="@css/menu.css" text="Προμηθευτές" />
               </children>
            </Pane>
         </left>
         <top>
            <Pane prefHeight="48.0" prefWidth="1002.0" style="-fx-background-color: #009fff;" BorderPane.alignment="CENTER">
               <children>
                  <Label fx:id="do_label" layoutX="629.0" layoutY="-1.0" prefHeight="50.0" prefWidth="139.0" text="Χρήστες" textAlignment="CENTER">
                     <font>
                        <Font size="34.0" />
                     </font>
                  </Label>
                  <Pane prefHeight="63.0" prefWidth="238.0" style="-fx-background-color: #0099ff;">
                     <children>
                        <Label layoutX="28.0" layoutY="4.0" prefHeight="55.0" prefWidth="183.0" text="MedExpress" textAlignment="CENTER">
                           <font>
                              <Font size="32.0" />
                           </font>
                           <textFill>
                              <LinearGradient endX="0.023809523809523836" endY="1.0">
                                 <stops>
                                    <Stop color="#862828" />
                                    <Stop color="#a18c8c" offset="1.0" />
                                 </stops>
                              </LinearGradient>
                           </textFill>
                        </Label>
                     </children>
                  </Pane>
               </children>
            </Pane>
         </top>
      </BorderPane>
   </children>
</AnchorPane>
Zirus12
  • 15
  • 3
  • See if this Q&A helps: https://stackoverflow.com/questions/61531317/how-do-i-determine-the-correct-path-for-fxml-files-css-files-images-and-other (in particular, read the "Troubleshooting" section). – James_D May 02 '20 at 14:10
  • unrelated: java naming conventions, please! – kleopatra May 02 '20 at 14:33

0 Answers0