Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Can someone assist with the code below? I keep getting an error code that cannot find symbol -class StringProperty. The error is shown below. Thank

Can someone assist with the code below? I keep getting an error code that "cannot find symbol -class StringProperty. The error is shown below. Thank you. I have the complete code below.

image text in transcribed

Question: Create a GUI for this particular project. You can use the lab 4 solution that youve submitted....

Create a GUI for this particular project. You can use the lab 4 solution that youve submitted.

Your GUI is completely up to you and should display all information that you find useful. It should be intuitive and informative.

Create a program that keeps track of specific information for Students. The information stored should be the following:

First Name, Last Name, Major, GPA, UIN, NetID, Age, Gender,

For this simple program we will only need to store 10 students in an ArrayList. Your students should be stored in an object called Student.

You should be able to add, display, sort (by any column you chose) and remove Students in the ArrayList.

Hint: To make your life easier take your previous lab solution and add a menu bar instead of adding a lot of new items.

Expert Answer

image text in transcribedAnonymous answered this

Was this answer helpful?

0

0

114 answers

//Student.java

public class Student {

private StringProperty firstName = new SimpleStringProperty(this, "firstName", ""); public String getFirstName() { return firstName.get(); } public StringProperty firstNameProperty() { return firstName; } public void setFirstName(String firstName) { this.firstName.set(firstName); }

private StringProperty lastName = new SimpleStringProperty(this, "lastName", ""); public String getLastName() {return lastName.get();} public StringProperty lastNameProperty() {return lastName;} public void setLastName(String lastName) { this.lastName.set(lastName); }

private StringProperty major = new SimpleStringProperty(this, "major", ""); public String getMajor() { return major.get(); } public StringProperty majorProperty() { return major; } public void setMajor(String major) { this.major.set(major); }

private DoubleProperty gradepoint = new SimpleDoubleProperty(this, "gradePoint", 0.0); public double getGradepoint() { return gradepoint.get(); } public DoubleProperty gradepointProperty() { return gradepoint; } public void setGradepoint(double gradepoint) { this.gradepoint.set(gradepoint); }

private StringProperty uin = new SimpleStringProperty(this, "uin", ""); public String getUin() { return uin.get(); } public StringProperty uinProperty() { return uin; } public void setUin(String uin) { this.uin.set(uin); }

private StringProperty netID = new SimpleStringProperty(this, "netID", ""); public String getNetID() { return netID.get(); } public StringProperty netIDProperty() { return netID; } public void setNetID(String netID) { this.netID.set(netID); }

private IntegerProperty age = new SimpleIntegerProperty(this, "age", 0); public int getAge() { return age.get(); } public IntegerProperty ageProperty() { return age; } public void setAge(int age) { this.age.set(age); }

private StringProperty gender = new SimpleStringProperty(this, "gender", ""); public String getGender() { return gender.get(); } public StringProperty genderProperty() { return gender; } public void setGender(String gender) { this.gender.set(gender); }

//for console printing purposes public String toString() {

return "First Name: " + getFirstName() + " | Last Name: " + getLastName() + " | UIN: " + getUin() + " | NetID: " + getNetID() + " | Major: " + getMajor() + " | Age: " + getAge() + " | GPA: " + getGradepoint() + " | Gender: " + getGender(); } }

===============================================================================

//StudentDatabase.java

import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage;

public class StudentDatabase extends Application {

@Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("StudentDatabaseFXML.fxml")); primaryStage.setTitle("Student Database"); primaryStage.setScene(new Scene(root, 1200, 800)); primaryStage.show(); } public static void main(String[] args) { launch(args); } }

=============================================================================

// Controller.java

import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.Event; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.control.cell.TextFieldTableCell; import javafx.stage.FileChooser; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.Window; import javafx.util.converter.NumberStringConverter; import java.io.*; import java.net.URL; import java.util.ResourceBundle;

public class Controller implements Initializable {

@FXML private ResourceBundle resources;

@FXML private URL location;

@FXML // fx:id="firstNameCol" private TableColumn firstNameCol;

@FXML // fx:id="lastNameCol" private TableColumn lastNameCol;

@FXML // fx:id="netIDCol" private TableColumn netIDCol;

@FXML // fx:id="ageCol" private TableColumn ageCol;

@FXML // fx:id="gpaCol" private TableColumn gpaCol;

@FXML // fx:id="majorCol" private TableColumn majorCol;

@FXML // fx:id="uinCol" private TableColumn uinCol;

@FXML // fx:id="genderCol" private TableColumn genderCol;

@FXML // fx:id="firstNameField" private TextField firstNameField;

@FXML // fx:id="lastNameField" private TextField lastNameField;

@FXML // fx:id="netIDField" private TextField netIDField;

@FXML // fx:id="ageField" private TextField ageField;

@FXML // fx:id="gpaField" private TextField gpaField;

@FXML // fx:id="majorField" private TextField majorField;

@FXML // fx:id="uinField" private TextField uinField;

@FXML private TextField filterInput;

@FXML // fx:id="genderBox" private ComboBox genderBox; ObservableList genderBoxData = FXCollections.observableArrayList();

@FXML private TableView studentTable;

@FXML // fx:id="addBtn" private Button addBtn;

@FXML // fx:id="deleteBtn" private Button deleteBtn;

@FXML private MenuBar fileMenu;

ObservableList observableStudentList = FXCollections.observableArrayList();

@Override public void initialize(URL url, ResourceBundle rb) { //add Listener to filterField filterInput.textProperty().addListener(new ChangeListener() { public void changed(ObservableValue observable, Object oldValue, Object newValue) { filterStudentList((String) oldValue, (String) newValue);

} }); //initialize editable attributes studentTable.setEditable(true); firstNameCol.setOnEditCommit(e -> firstNameCol_OnEditCommit(e)); lastNameCol.setOnEditCommit(e -> lastNameCol_OnEditCommit(e)); uinCol.setOnEditCommit(e -> uinCol_OnEditCommit(e)); netIDCol.setOnEditCommit(e -> netIDCol_OnEditCommit(e)); majorCol.setOnEditCommit(e -> majorCol_OnEditCommit(e)); ageCol.setOnEditCommit(e -> ageCol_OnEditCommit(e)); gpaCol.setOnEditCommit(e -> genderCol_OnEditCommit(e)); genderCol.setOnEditCommit(e -> genderCol_OnEditCommit(e));

studentTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn()); lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn()); uinCol.setCellFactory(TextFieldTableCell.forTableColumn()); netIDCol.setCellFactory(TextFieldTableCell.forTableColumn()); majorCol.setCellFactory(TextFieldTableCell.forTableColumn()); ageCol.setCellFactory(TextFieldTableCell.forTableColumn(new NumberStringConverter())); gpaCol.setCellFactory(TextFieldTableCell.forTableColumn(new NumberStringConverter())); genderCol.setCellFactory(TextFieldTableCell.forTableColumn());

firstNameCol.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty()); lastNameCol.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty()); majorCol.setCellValueFactory(cellData -> cellData.getValue().majorProperty()); gpaCol.setCellValueFactory(cellData -> cellData.getValue().gradepointProperty()); uinCol.setCellValueFactory(cellData -> cellData.getValue().uinProperty()); netIDCol.setCellValueFactory(cellData -> cellData.getValue().netIDProperty()); ageCol.setCellValueFactory(cellData -> cellData.getValue().ageProperty()); genderCol.setCellValueFactory(cellData -> cellData.getValue().genderProperty());

//initialize gender ComboBox genderBoxData.add(new String("Male")); genderBoxData.add(new String("Female"));

genderBox.setItems(genderBoxData);

addBtn.setDisable(true); deleteBtn.setDisable(true); studentTable.setItems(observableStudentList); studentTable.setEditable(true); studentTable.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); studentTable.setPlaceholder(new Label("Your Table is Empty"));

firstNameField.focusedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (firstNameField.isFocused()) { addBtn.setDisable(false); } } }); studentTable.focusedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (studentTable.isFocused()) { deleteBtn.setDisable(false); } } }); }//end initialize

/* ----------------------------------------------Control handlers--------------------------------------------- */ public void handleAddButtonClick(ActionEvent event) { /* Get input from user and add to Table */ if (observableStudentList.size()

Boolean validInput = true;

if(firstNameField == null || firstNameField.getText().trim().isEmpty()) { validInput = false; Alert emptyFirstName = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyFirstName.setContentText("First name is EMPTY"); emptyFirstName.initModality(Modality.APPLICATION_MODAL); emptyFirstName.initOwner(owner); emptyFirstName.showAndWait(); if(emptyFirstName.getResult() == ButtonType.OK) { emptyFirstName.close(); firstNameField.requestFocus(); } } if(lastNameField == null || lastNameField.getText().trim().isEmpty()) { validInput = false; Alert emptyLastName = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyLastName.setContentText("Last name is EMPTY"); emptyLastName.initModality(Modality.APPLICATION_MODAL); emptyLastName.initOwner(owner); emptyLastName.showAndWait(); if (emptyLastName.getResult() == ButtonType.OK) { emptyLastName.close(); lastNameField.requestFocus(); } } if(uinField == null || uinField.getText().trim().isEmpty()) { validInput = false; Alert emptyUIN = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyUIN.setContentText("UIN is EMPTY"); emptyUIN.initModality(Modality.APPLICATION_MODAL); emptyUIN.initOwner(owner); emptyUIN.showAndWait(); if (emptyUIN.getResult() == ButtonType.OK) { emptyUIN.close(); uinField.requestFocus(); } } if(netIDField == null || netIDField.getText().trim().isEmpty()) { validInput = false; Alert emptyNetID = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyNetID.setContentText("NetID is EMPTY"); emptyNetID.initModality(Modality.APPLICATION_MODAL); emptyNetID.initOwner(owner); emptyNetID.showAndWait(); if (emptyNetID.getResult() == ButtonType.OK) { emptyNetID.close(); netIDField.requestFocus(); } } if(majorField == null || majorField.getText().trim().isEmpty()) { validInput = false; Alert emptyMajor = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyMajor.setContentText("Major is EMPTY"); emptyMajor.initModality(Modality.APPLICATION_MODAL); emptyMajor.initOwner(owner); emptyMajor.showAndWait(); if (emptyMajor.getResult() == ButtonType.OK) { emptyMajor.close(); majorField.requestFocus(); } } if(ageField == null || ageField.getText().trim().isEmpty()) { validInput = false; Alert emptyAge = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyAge.setContentText("Age is EMPTY"); emptyAge.initModality(Modality.APPLICATION_MODAL); emptyAge.initOwner(owner); emptyAge.showAndWait(); if (emptyAge.getResult() == ButtonType.OK) { emptyAge.close(); ageField.requestFocus(); } } if(gpaField == null || gpaField.getText().trim().isEmpty()) { validInput = false; Alert emptyGPA = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyGPA.setContentText("GPA is EMPTY"); emptyGPA.initModality(Modality.APPLICATION_MODAL); emptyGPA.initOwner(owner); emptyGPA.showAndWait(); if (emptyGPA.getResult() == ButtonType.OK) { emptyGPA.close(); gpaField.requestFocus(); } } if(genderBox == null || genderBox.getValue().isEmpty()) { validInput = false; Alert emptyGender = new Alert(Alert.AlertType.WARNING, "Warning", ButtonType.OK); Window owner = ((Node) event.getTarget()).getScene().getWindow(); emptyGender.setContentText("Gender is EMPTY"); emptyGender.initModality(Modality.APPLICATION_MODAL); emptyGender.initOwner(owner); emptyGender.showAndWait(); if (emptyGender.getResult() == ButtonType.OK) { emptyGender.close(); genderBox.requestFocus(); } } return validInput; } /* handle column edits */ public void firstNameCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setFirstName(cellEditEvent.getNewValue()); } public void lastNameCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setLastName(cellEditEvent.getNewValue()); } public void uinCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setUin(cellEditEvent.getNewValue()); } public void netIDCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setNetID(cellEditEvent.getNewValue()); } public void majorCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setMajor(cellEditEvent.getNewValue()); } public void ageCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setAge(cellEditEvent.getNewValue()); } public void gpaCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setGradepoint(cellEditEvent.getNewValue()); } public void genderCol_OnEditCommit(Event e) { TableColumn.CellEditEvent cellEditEvent; cellEditEvent = (TableColumn.CellEditEvent) e; Student student = cellEditEvent.getRowValue(); student.setGender(cellEditEvent.getNewValue()); } public void handleDeleteButtonClick(ActionEvent event) { if(!observableStudentList.isEmpty()) { System.out.println("Delete button clicked"); Alert deleteAlert = new Alert(Alert.AlertType.WARNING, "Confirm", ButtonType.OK, ButtonType.CANCEL); Window owner = ((Node) event.getTarget()).getScene().getWindow(); deleteAlert.setContentText("Are you sure you want to delete this? THIS CANNOT BE UNDONE."); deleteAlert.initModality(Modality.APPLICATION_MODAL); deleteAlert.initOwner(owner); deleteAlert.showAndWait(); if(deleteAlert.getResult() == ButtonType.OK) { observableStudentList.removeAll(studentTable.getSelectionModel().getSelectedItems()); studentTable.getSelectionModel().clearSelection(); } else { deleteAlert.close(); } } } public void handleClearButtonClick(ActionEvent event) { firstNameField.clear(); lastNameField.clear(); uinField.clear(); netIDField.clear(); majorField.clear(); ageField.clear(); gpaField.clear(); genderBox.setValue("Gender"); } //filter table by first or last name public void filterStudentList(String oldValue, String newValue) { ObservableList filteredList = FXCollections.observableArrayList(); if(filterInput == null || (newValue.length() observableStudentList, File file) { try { BufferedWriter outWriter = new BufferedWriter(new FileWriter(file));

for(Student students : observableStudentList) { outWriter.write(students.toString()); outWriter.newLine(); } System.out.println(observableStudentList.toString()); outWriter.close(); } catch (IOException e) { Alert ioAlert = new Alert(Alert.AlertType.ERROR, "OOPS!", ButtonType.OK); ioAlert.setContentText("Sorry. An error has occurred."); ioAlert.showAndWait(); if(ioAlert.getResult() == ButtonType.OK) { ioAlert.close(); } } } public void closeApp(ActionEvent event) { Alert exitAlert = new Alert(Alert.AlertType.CONFIRMATION, "Confirm", ButtonType.OK, ButtonType.CANCEL); Stage stage = (Stage) fileMenu.getScene().getWindow(); exitAlert.setContentText("Are you sure you want to exit?"); exitAlert.initModality(Modality.APPLICATION_MODAL); exitAlert.initOwner(stage); exitAlert.showAndWait();

if(exitAlert.getResult() == ButtonType.OK) { Platform.exit(); } else { exitAlert.close(); } } }

//Student.java c class Student SimpleStringProperty (this, "firstNam private lStringPrope rtyl firstName public String getFirstName ) t return firstName.getO; new public StringProperty firstName Property) [ return firstName; public void setFirstName (String firstName) t this.firstName.set(firstName); private StringProperty lastName= new SimpleStringProperty (this, "lastName", ""); public String getLastName () return lastName.getOF public StringProperty lastName Property) freturn lastName: public void setLastName (String lastName) this.lastName.set (lastName); private StringProperty major= new SimpleStringProperty (this, "major", ""); public String getMajor) [ return major.get); public StringProperty majorProperty) return major; public void setMajor (String major) cannot find symbol - class StringProperty //Student.java c class Student SimpleStringProperty (this, "firstNam private lStringPrope rtyl firstName public String getFirstName ) t return firstName.getO; new public StringProperty firstName Property) [ return firstName; public void setFirstName (String firstName) t this.firstName.set(firstName); private StringProperty lastName= new SimpleStringProperty (this, "lastName", ""); public String getLastName () return lastName.getOF public StringProperty lastName Property) freturn lastName: public void setLastName (String lastName) this.lastName.set (lastName); private StringProperty major= new SimpleStringProperty (this, "major", ""); public String getMajor) [ return major.get); public StringProperty majorProperty) return major; public void setMajor (String major) cannot find symbol - class StringProperty

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Postgresql 16 Administration Cookbook Solve Real World Database Administration Challenges With 180+ Practical Recipes And Best Practices

Authors: Gianni Ciolli ,Boriss Mejias ,Jimmy Angelakos ,Vibhor Kumar ,Simon Riggs

1st Edition

1835460585, 978-1835460580

More Books

Students also viewed these Databases questions