UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
Build 3 JavaFX Apps
1. Build 3 JavaFX Apps
Real-world, modern-looking GUIs with JavaFX
Marius Claassen,
Build 3 JavaFX Apps
2. About me
Marius Claassen, Java Expert and Teacher
I taught myself to program using Java. Having been a teacher for many
years, I am now working full-time as an independent software
instructor, making video tutorials. My passions are learning, teaching
and Java in equal measure. It is my mission to help others learn
programming in general and Java-related software in particular.
2
Marius Claassen,
Build 3 JavaFX Apps
3. Benefits
• Build applications in JavaFX
• Create a portfolio of working Apps
• Implement the MVC pattern
• Analyse Business requirements
• Devise JavaFX solutions
• Develop real-world apps
3
Marius Claassen,
Build 3 JavaFX Apps
4. Major components
• Introduction
• Airline App
• Health Centre App
• Real Estate App
• Conclusion
4
Marius Claassen,
Build 3 JavaFX Apps
5. Development tools
• JDK (SE10)
http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html
• IDE (IntelliJ IDEA)
https://www.jetbrains.com/idea/download/#section=windows
• Scene Builder
http://gluonhq.com/products/scene-builder/thanks/?dl=/download/scene-builder-9-windows-x64/
5
Marius Claassen,
Build 3 JavaFX Apps
17. Lecture 4: Airline App – Code 1
Problem statement:
Implement code to check if a passenger’s
boarding is confirmed
17
Marius Claassen,
Build 3 JavaFX Apps
59. public class AirlineController implements Initializable {
private ToggleGroup toggleGroup = new ToggleGroup();
59
Marius Claassen,
Build 3 JavaFX Apps
68. Major components
Introduction
Airline App
• Health Centre App
• Real Estate App
• Conclusion
68
Marius Claassen,
Build 3 JavaFX Apps
69. Lecture 9: Health centre - Design
Problem statement:
Design the graphical user interface of a
Health Centre App
69
Marius Claassen,
Build 3 JavaFX Apps
77. Lecture 11: Health centre – Code 1
Problem statement:
Implement code to calculate the amount
payable to a health plan
77
Marius Claassen,
Build 3 JavaFX Apps
78. Lecture 11: Health centre – Code 1
package javafx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
78
Marius Claassen,
Build 3 JavaFX Apps
79. public class HealthCentreApp extends Application {
@Override public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource(“HealthCentreView.fxml"));
primaryStage.setTitle("JavaFX Health Centre App");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) { launch(args); }
}
79
Marius Claassen,
Build 3 JavaFX Apps
86. String result = String.format("%.2f", contribution);
Alert alert = new Alert(Alert.AlertType.INFORMATION,
"Monthly payment: $" + result);
alert.setTitle("");
alert.setHeaderText("");
alert.show(); } }); }
86
Marius Claassen,
Build 3 JavaFX Apps
87. private boolean validHealthPlan() {
if (textFieldDependants.getText().isEmpty() ||
(listViewHealthPlans.getSelectionModel().getSelectedItem().isEmpty())) {
Alert alert = new Alert(Alert.AlertType.ERROR,
"Select health plan and enter number of dependants");
alert.setTitle("");
alert.setHeaderText("");
alert.showAndWait();
return false; }
return true; } }
87
Marius Claassen,
Build 3 JavaFX Apps
91. Lecture 12: Health centre – Code 2
Problem statement:
Implement code to process a payment
schedule for 12 months
91
Marius Claassen,
Build 3 JavaFX Apps
92. Lecture 12: Health centre – Code 2
package javafx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
92
Marius Claassen,
Build 3 JavaFX Apps
93. public class HealthCentreApp extends Application {
@Override public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource(“HealthCentreView.fxml"));
primaryStage.setTitle("JavaFX Health Centre App");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) { launch(args); }
}
93
Marius Claassen,
Build 3 JavaFX Apps
101. public Payment(int paymentNo, int monthlyPayment, int amountOwed) {
this.paymentNumber = new SimpleIntegerProperty(paymentNo);
this.monthlyPayment = new
SimpleIntegerProperty(monthlyPayment);
this.amountOwed = new SimpleIntegerProperty(amountOwed);
}
101
Marius Claassen,
Build 3 JavaFX Apps
102. public int getPaymentNumber() {
return paymentNumber.get(); }
public SimpleIntegerProperty paymentNumberProperty() {
return paymentNumber; }
public void setPaymentNumber(int paymentNumber) {
this.paymentNumber.set(paymentNumber); }
102
Marius Claassen,
Build 3 JavaFX Apps
103. public int getMonthlyPayment() {
return monthlyPayment.get(); }
public SimpleIntegerProperty monthlyPaymentProperty() {
return monthlyPayment; }
public void setMonthlyPayment(int monthlyPayment) {
this.monthlyPayment.set(monthlyPayment); }
103
Marius Claassen,
Build 3 JavaFX Apps
104. public int getAmountOwed() {
return amountOwed.get(); }
public SimpleIntegerProperty amountOwedProperty() {
return amountOwed; }
public void setAmountOwed(int amountOwed) {
this.amountOwed.set(amountOwed); } }
104
Marius Claassen,
Build 3 JavaFX Apps
117. Lecture 14: Health centre – Code 4
Problem statement:
Implement code to process the doctors’
hours at work
117
Marius Claassen,
Build 3 JavaFX Apps
118. Lecture 14: Health centre – Code 4
package javafx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
118
Marius Claassen,
Build 3 JavaFX Apps
119. public class HealthCentreApp extends Application {
@Override public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource(“HealthCentreView.fxml"));
primaryStage.setTitle("JavaFX Health Centre App");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) { launch(args); }
}
119
Marius Claassen,
Build 3 JavaFX Apps
123. @Override public void initialize(URL location, ResourceBundle rb) {
textFieldNumberOfPatients.setText("");
textFieldMinutesPerPatient.setText("");
}
123
Marius Claassen,
Build 3 JavaFX Apps
124. @FXML private void doctorButtonClick() {
int totalPatients =
Integer.parseInt(textFieldNumberOfPatients.getText());
int patientsPerDoctor = totalPatients / 3;
int remainder = totalPatients % 3;
int doctorTsade = patientsPerDoctor;
int doctorKuf = patientsPerDoctor;
124
Marius Claassen,
Build 3 JavaFX Apps
125. if (remainder == 2) {
doctorTsade++;
doctorKuf++;
} else {
doctorTsade++;
}
125
Marius Claassen,
Build 3 JavaFX Apps
126. int hours = 0;
int minutes;
int aveConsultationTime =
Integer.parseInt(textFieldNumberOfMinutes.getText());
int totalConsultationTime = doctorTsade * aveConsultationTime;
int hoursWorked = 0;
126
Marius Claassen,
Build 3 JavaFX Apps
135. Major components
Introduction
Airline App
Health Centre App
• Real Estate App
• Conclusion
135
Marius Claassen,
Build 3 JavaFX Apps
136. Lecture 15: Real estate - Design
Problem statement:
Design the graphical user interface of a Real
Estate App
136
Marius Claassen,
Build 3 JavaFX Apps
153. @FXML public void advertisementButtonClick() {
StringProperty advert = new SimpleStringProperty("nHOUSE
FOR SALE:");
StringBinding swimmingPool = new When
(checkBoxSwimmingPool.selectedProperty())
.then("Swimming Pool")
.otherwise("");
153
Marius Claassen,
Build 3 JavaFX Apps
154. int marketValue =
Integer.parseInt(textFieldMarketValue.getText());
int sellingPrice =
Integer.parseInt(textFieldSellingPrice.getText());
int numberOfBedrooms =
Integer.parseInt(textFieldNumberOfBedrooms.getText());
int numberOfBathrooms =
Integer.parseInt(textFieldNumberOfBathrooms.getText());
String bargain = (sellingPrice < marketValue) ? "Bargain" : "";
154
Marius Claassen,
Build 3 JavaFX Apps
160. Lecture 18: Real estate – Code 2
Problem statement:
Implement code to process renovations to
the living room
160
Marius Claassen,
Build 3 JavaFX Apps
177. Lecture 19: Real estate – Code 3
Problem statement:
Implement code to calculate the electricity
amount payable
177
Marius Claassen,
Build 3 JavaFX Apps
181. public class RealEstateController {
private static final int ELECTRICITY_LOWER_LIMIT_UNITS =
600;
private static final int
ELECTRICITY_LOWER_LIMIT_AMOUNT = 50;
private static final double ELECTRICITY_LOWER_TARIFF =
0.10;
private static final double ELECTRICITY_UPPER_TARIFF =
0.15;
181
Marius Claassen,
Build 3 JavaFX Apps
189. Lecture 20: Real estate – Code 4
Problem statement:
Implement code to display the size of geyser
matching the user input
189
Marius Claassen,
Build 3 JavaFX Apps
200. To access this course:
• https://www.udemy.com/course/1474854/manage/basics/
or
• mariusclaassen@gmail.com
200
Marius Claassen,
Build 3 JavaFX Apps
201. Build 3 JavaFX Apps
Real-world, modern-looking GUIs with JavaFX
Marius Claassen,
Build 3 JavaFX Apps