
рдирдорд╕реНрддреЗ!
рд╣рд╛рд▓ рддрдХ рддрдХ, рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рдЪрд┐рддреНрд░рдордп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рд╢реВрдиреНрдп рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдХреБрдЫ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдЗрд╕ рдкрд╛рда рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рдЙрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдВрдЧреЗ рдЬреЛ рдПрдХ рдмрд╛рд░ рд╕рд╛рдордиреЗ рдЖрдП; рдЙрд╕реА рд╕рдордп, рдореБрдЭреЗ рдЧрдВрднреАрд░ рдФрд░ рд╕рдХреНрд╖рдо рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
рдЪреВрдБрдХрд┐ рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп JavaFX рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рдореБрдЭреЗ рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдПрдВ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╡реЗ рдПрдХ рдХрдВрдкрдиреА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ), рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд╛рдо, рдЖрдпреБ, рд╡реЗрддрди рдФрд░ рд╡реИрд╡рд╛рд╣рд┐рдХ рд╕реНрдерд┐рддрд┐ рдЬрд╛рдиреЗрдВрдЧреЗред рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧреА, рджреВрд╕рд░рд╛, рдХрд┐рд╕реА рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд╡реЗрддрди рдХреЛ рдмрджрд▓рдирд╛, рддреАрд╕рд░рд╛, рдПрдХ рдирдП рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЪреМрдереЗ, рдпрд╣ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрдВрдкрдиреА рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдЧрд╛:
package company; public class Company { public static void main(String[] args) { } }
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ
рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛
рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд╕реЗ, рд╣рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ () рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрдЧреА (рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди StackTrace рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА; :
package company; import javafx.application.Application; import javafx.stage.Stage; public class Company extends Application { public void start(Stage primaryStage) throws Exception { } public static void main(String[] args) { launch(args); } }
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдХрдВрдкрдиреА рдХреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ: рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдПрдВ рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ package company; public class User { User(String name, int age, int salary, boolean married) { this.name = name; this.age = age; this.salary = salary; this.married = married; } public void changeSalary(int x) { salary = (salary + x <= 0)? 0: salary + x; } public String toString() { return name; } public String getAge() { return String.valueOf(age); } public String getSalary() { return String.valueOf(salary); } public String getMarried() { return (married)? ("married"):("single"); } String name; int age; int salary; boolean married; }
рдмрдирд╛рдиреЗ
рдЕрдм рддрдХ, рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдХрд░ рд▓реЗрдВрдЧреЗред
package company; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; public class Company extends Application { public void start(Stage primaryStage) throws Exception { Scene scene = new Scene(root, WIDTH, HEIGHT); primaryStage.setTitle("Company"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } Group root = new Group(); final private int WIDTH = 1000; final private int HEIGHT = 600; }
рд╣рдордиреЗ рдЕрднреА рдХреНрдпрд╛ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдЬреЛрдбрд╝рд╛
, рдЙрд╕реЗ "рдХрдВрдкрдиреА" рдирд╛рдо рджрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкрд░ рдПрдХ
рд░реВрдЯ рд╕рдореВрд╣ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рдХрдВрдЯреЗрдирд░" рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдмрдЯрди рд╣реЛрдВрдЧреЗред
рд╣рдорд╛рд░реЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдЬреЛрдбрд╝реЗрдВред рдЖрдЗрдП рдПрдХ HBox рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдирд╛ рдХреЙрдореНрдмреЛрдХреНрд╕ рдпреВрдЬрд╝рд░рдмреЙрдХреНрд╕ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдЯрди рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ (рд╣рдо HBox рдХреЛ VBox рдореЗрдВ рд░рдЦреЗрдВрдЧреЗ):
package company; import java.util.ArrayList; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.stage.Stage; public class Company extends Application { public void start(Stage primaryStage) throws Exception { users.add(new User("Alice", 20, 150, false)); users.add(new User("Bob", 34, 300, true)); users.add(new User("Peter", 18, 100, false)); users.add(new User("Kate", 38, 300, true)); users.add(new User("Steve", 31, 250, true)); users.add(new User("Alan", 62, 500, true)); users.add(new User("Julia", 33, 320, true)); users.add(new User("Patric", 37, 300, true)); users.add(new User("Alexander", 34, 280, true)); users.add(new User("George", 28, 180, true)); users.add(new User("Mary", 22, 190, false)); userBox.getItems().addAll(users); root.getChildren().add(strings); strings.setPadding(new Insets(10, 30, 10, 30)); strings.setSpacing(20); strings.getChildren().add(new Text("Select the user")); strings.getChildren().add(buttonBox); buttonBox.setSpacing(10); buttonBox.getChildren().add(userBox); Scene scene = new Scene(root, WIDTH, HEIGHT); primaryStage.setTitle("Company"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } Group root = new Group(); VBox strings = new VBox(); HBox buttonBox = new HBox(); ComboBox<User> userBox = new ComboBox<>(); final private int WIDTH = 1000; final private int HEIGHT = 600; private ArrayList<User> users = new ArrayList<>(); }

VBox, HBox рдФрд░ ComboBox рдХреНрдпрд╛ рд╣реИрдВ
HBox рдмрдЯрди, рдЧреНрд░рдВрдереЛрдВ, рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рдорд╛рди, VBox рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ (рдмрдЪреНрдЪреЛрдВ) рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдПрдХ VBox рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдХрдИ HBox'ov рдбрд╛рд▓реЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╣рдо рдмрдЯрди рдФрд░ рдлрд╝реАрд▓реНрдб рдХрд╛ рдПрдХ рдХреНрд░рдо рдбрд╛рд▓реЗрдВрдЧреЗред
рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рдХреЗрд╡рд▓ рдПрдХ рдбреНрд░реЙрдкрдбрд╛рдЙрди рд╕реВрдЪреА рд╣реА рд╣реИред
рдЕрдм рд╣рдо рдПрдХ рдмрдЯрди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЪрдпрдирд┐рдд рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╕реНрд╡рдпрдВ рдмрдЯрди (рдмрдЯрди) рдФрд░ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ (рдЯреЗрдХреНрд╕реНрдЯрдлрд┐рд▓реНрдб) рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрди рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ HBox рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
package company; public class Company extends Application { public void start(Stage primaryStage) throws Exception { buttonBox.setSpacing(10); buttonBox.getChildren().add(userBox); buttonBox.getChildren().add(buttonGetInfo); buttonBox.getChildren().add(textInfo); } Button buttonGetInfo = new Button("Info"); Text textInfo = new Text(); }

рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рдмрдЯрди рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рд╕реМрдВрдкрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
buttonGetInfo.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { User u = (User) userBox.getSelectionModel().getSelectedItem(); if (u != null) { textInfo.setText("Age is " + u.getAge() + ", " + "Salary is " + u.getSalary() + ", " + "Relationship: " + u.getMarried()); } else { textInfo.setText("User not selected"); } } });

рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ
рдареАрдХ рдЙрд╕реА рддрд░рд╣, рд╣рдо рджреЛ рдФрд░ HBox рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рджреВрд╕рд░реЗ рдореЗрдВ рд╡реЗрддрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛, рддреАрд╕рд░реЗ рдореЗрдВ - рдПрдХ рдирдП рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрддред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдпрд╣рд╛рдВ рддрд░реНрдХ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИ, рд╣рдо рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ:

рдХреЛрдб package company; import java.util.ArrayList; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.stage.Stage; public class Company extends Application { public void start(Stage primaryStage) throws Exception { users.add(new User("Alice", 20, 150, false)); users.add(new User("Bob", 34, 300, true)); users.add(new User("Peter", 18, 100, false)); users.add(new User("Kate", 38, 300, true)); users.add(new User("Steve", 31, 250, true)); users.add(new User("Alan", 62, 500, true)); users.add(new User("Julia", 33, 320, true)); users.add(new User("Patric", 37, 300, true)); users.add(new User("Alexander", 34, 280, true)); users.add(new User("George", 28, 180, true)); users.add(new User("Mary", 22, 190, false)); userBox.getItems().addAll(users); root.getChildren().add(strings); strings.setPadding(new Insets(10, 30, 10, 30)); strings.setSpacing(20); strings.getChildren().add(new Text("Select the user")); strings.getChildren().add(buttonBox); strings.getChildren().add(new Text("Change the salary")); strings.getChildren().add(changeSalaryBox); strings.getChildren().add(new Text("Add new User")); strings.getChildren().add(addUserBox); buttonBox.setSpacing(10); buttonBox.getChildren().add(userBox); buttonBox.getChildren().add(buttonGetInfo); buttonBox.getChildren().add(textInfo); changeSalaryBox.setSpacing(10); changeSalaryBox.getChildren().add(buttonChangeSalary); changeSalaryBox.getChildren().add(howMuchChange); addUserBox.setSpacing(10); addUserBox.getChildren().add(new Text("Name: ")); addUserBox.getChildren().add(name); addUserBox.getChildren().add(new Text("Age: ")); addUserBox.getChildren().add(age); addUserBox.getChildren().add(new Text("Salary: ")); addUserBox.getChildren().add(salary); addUserBox.getChildren().add(new Text("Married: ")); addUserBox.getChildren().add(married); addUserBox.getChildren().add(buttonAddUser); buttonGetInfo.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { User u = (User) userBox.getSelectionModel().getSelectedItem(); if (u != null) { textInfo.setText("Age is " + u.getAge() + ", " + "Salary is " + u.getSalary() + ", " + "Relationship: " + u.getMarried()); } else { textInfo.setText("User not selected"); } } }); buttonChangeSalary.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { User u = (User) userBox.getSelectionModel().getSelectedItem(); if(u != null) { u.changeSalary(Integer.parseInt(howMuchChange.getText())); textInfo.setText("Age is " + u.getAge() + ", " + "Salary is " + u.getSalary() + ", " + "Relationshp: " + u.getMarried()); howMuchChange.clear(); } } }); buttonAddUser.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { String m = married.getText(); boolean mm = (m.equals("married"))? true:false; User u = new User(name.getText(), Integer.parseInt(age.getText()), Integer.parseInt(salary.getText()), mm); users.add(u); userBox.getItems().addAll(u); name.clear(); age.clear(); salary.clear(); married.clear(); } }); Scene scene = new Scene(root, WIDTH, HEIGHT); primaryStage.setTitle("Company"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } Group root = new Group(); VBox strings = new VBox(); HBox buttonBox = new HBox(); ComboBox<User> userBox = new ComboBox<>(); Button buttonGetInfo = new Button("Info"); Text textInfo = new Text(); HBox changeSalaryBox = new HBox(); Button buttonChangeSalary = new Button("Change salary"); TextField howMuchChange = new TextField(); HBox addUserBox = new HBox(); Button buttonAddUser = new Button("Add User"); TextField name = new TextField(); TextField age = new TextField(); TextField salary = new TextField(); TextField married = new TextField(); final private int WIDTH = 1000; final private int HEIGHT = 600; private ArrayList<User> users = new ArrayList<>(); }
рдлрд┐рд▓реНрдЯрд░
рдЕрдм рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ "рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ" рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░ рд╕реЗ, рд╣рдо рдЙрд╕реА рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
package company; public class Company extends Application { public void start(Stage primaryStage) throws Exception { ageFilterBox.getItems().addAll( "no matter", "over 20", "over 30", "over 40" ); salaryFilterBox.getItems().addAll( "no matter", "over 150", "over 250", "over 500" ); relationshipFilterBox.getItems().addAll( "no matter", "married", "single" ); strings.getChildren().add(filters); strings.getChildren().add(resultFilter); filters.setSpacing(10); filters.getChildren().add(new Text("Age")); filters.getChildren().add(ageFilterBox); filters.getChildren().add(new Text("Salary")); filters.getChildren().add(salaryFilterBox); filters.getChildren().add(new Text("Relationship")); filters.getChildren().add(relationshipFilterBox); filters.getChildren().add(filter); filter.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { int age; int index = ageFilterBox.getSelectionModel().getSelectedIndex(); age = (index == 0)? 0: (index == 1)? 21: (index == 2)? 31: 41; int salary; index = salaryFilterBox.getSelectionModel().getSelectedIndex(); salary = (index == 0)? 0 : (index == 1)? 151 : (index == 2)? 251:501; boolean relate; index = relationshipFilterBox.getSelectionModel().getSelectedIndex(); relate = (index == 1)? true: (index == 2)? false: true; List<User> list; if(index != 0) { list = users.stream(). filter(u -> u.age > age). filter(u -> u.salary > salary). filter(u -> u.married == relate). collect(Collectors.toList()); } else { list = users.stream(). filter(u -> u.age > age). filter(u -> u.salary > salary). collect(Collectors.toList()); } String res = ""; for(User u: list) { res += u.toString() + ", "; } resultFilter.setText(res); } }); } HBox filters = new HBox(); ComboBox<String> ageFilterBox = new ComboBox<>(); ComboBox<String> salaryFilterBox = new ComboBox<>(); ComboBox<String> relationshipFilterBox = new ComboBox<>(); Button filter = new Button("filter"); Text resultFilter = new Text(); }

рд╣реЛ рдЧрдпрд╛!
рдкреВрд░реНрдг рдХреЛрдбрдХрдВрдкрдиреА рд╡рд░реНрдЧ (рдореБрдЦреНрдп)
package company; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.text.Text; import javafx.stage.Stage; public class Company extends Application { @Override public void start(Stage primaryStage) throws Exception { users.add(new User("Alice", 20, 150, false)); users.add(new User("Bob", 34, 300, true)); users.add(new User("Peter", 18, 100, false)); users.add(new User("Kate", 38, 300, true)); users.add(new User("Steve", 31, 250, true)); users.add(new User("Alan", 62, 500, true)); users.add(new User("Julia", 33, 320, true)); users.add(new User("Patric", 37, 300, true)); users.add(new User("Alexander", 34, 280, true)); users.add(new User("George", 28, 180, true)); users.add(new User("Mary", 22, 190, false)); userBox.getItems().addAll(users); ageFilterBox.getItems().addAll( "no matter", "over 20", "over 30", "over 40" ); salaryFilterBox.getItems().addAll( "no matter", "over 150", "over 250", "over 500" ); relationshipFilterBox.getItems().addAll( "no matter", "married", "single" ); root.getChildren().add(strings); strings.setPadding(new Insets(10, 30, 10, 30)); strings.setSpacing(20); strings.getChildren().add(new Text("Select the user")); strings.getChildren().add(buttonBox); strings.getChildren().add(new Text("Change the salary")); strings.getChildren().add(changeSalaryBox); strings.getChildren().add(new Text("Add new User")); strings.getChildren().add(addUserBox); strings.getChildren().add(filters); strings.getChildren().add(resultFilter); buttonBox.setSpacing(10); buttonBox.getChildren().add(userBox); buttonBox.getChildren().add(buttonGetInfo); buttonBox.getChildren().add(textInfo); changeSalaryBox.setSpacing(10); changeSalaryBox.getChildren().add(buttonChangeSalary); changeSalaryBox.getChildren().add(howMuchChange); addUserBox.setSpacing(10); addUserBox.getChildren().add(new Text("Name: ")); addUserBox.getChildren().add(name); addUserBox.getChildren().add(new Text("Age: ")); addUserBox.getChildren().add(age); addUserBox.getChildren().add(new Text("Salary: ")); addUserBox.getChildren().add(salary); addUserBox.getChildren().add(new Text("Married: ")); addUserBox.getChildren().add(married); addUserBox.getChildren().add(buttonAddUser); filters.setSpacing(10); filters.getChildren().add(new Text("Age")); filters.getChildren().add(ageFilterBox); filters.getChildren().add(new Text("Salary")); filters.getChildren().add(salaryFilterBox); filters.getChildren().add(new Text("Relationship")); filters.getChildren().add(relationshipFilterBox); filters.getChildren().add(filter); Scene scene = new Scene(root, WIDTH, HEIGHT); primaryStage.setTitle("Company"); primaryStage.setScene(scene); primaryStage.show(); buttonGetInfo.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { User u = (User) userBox.getSelectionModel().getSelectedItem(); if (u != null) { textInfo.setText("Age is " + u.getAge() + ", " + "Salary is " + u.getSalary() + ", " + "Relationship: " + u.getMarried()); } else { textInfo.setText("User not selected"); } } }); buttonChangeSalary.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { User u = (User) userBox.getSelectionModel().getSelectedItem(); if(u != null) { u.changeSalary(Integer.parseInt(howMuchChange.getText())); textInfo.setText("Age is " + u.getAge() + ", " + "Salary is " + u.getSalary() + ", " + "Relationshp: " + u.getMarried()); howMuchChange.clear(); } } }); buttonAddUser.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { String m = married.getText(); boolean mm = (m.equals("married"))? true:false; User u = new User(name.getText(), Integer.parseInt(age.getText()), Integer.parseInt(salary.getText()), mm); users.add(u); userBox.getItems().addAll(u); name.clear(); age.clear(); salary.clear(); married.clear(); } }); filter.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { int age; int index = ageFilterBox.getSelectionModel().getSelectedIndex(); age = (index == 0)? 0: (index == 1)? 21: (index == 2)? 31: 41; int salary; index = salaryFilterBox.getSelectionModel().getSelectedIndex(); salary = (index == 0)? 0 : (index == 1)? 151 : (index == 2)? 251:501; boolean relate; index = relationshipFilterBox.getSelectionModel().getSelectedIndex(); relate = (index == 1)? true: (index == 2)? false: true;
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ
package company; public class User { User(String name, int age, int salary, boolean married) { this.name = name; this.age = age; this.salary = salary; this.married = married; } public void changeSalary(int x) { salary = (salary + x <= 0)? 0: salary + x; } public String toString() { return name; } public String getAge() { return String.valueOf(age); } public String getSalary() { return String.valueOf(salary); } public String getMarried() { return (married)? ("married"):("single"); } String name; int age; int salary; boolean married; }
рд╡рд╣ рдХреНрдпрд╛ рдерд╛
рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдФрд░ рдЗрд╕рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрддрди рдмрджрд▓рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░, рдпрд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдирдП рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрдЧреА рдЬрдм рдХреБрдЫ рдореВрд▓реНрдп рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рд╣рд░ рдХреЛрдИ рдЗрди рдкрд▓реЛрдВ рдХрд╛ рдЕрдкрдирд╛ "рдЪрдХреНрдХрд░" рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рдХреБрдЦреНрдпрд╛рдд StreamAPI рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
-expressions рдЬреЛ рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рдЖрдХрд░реНрд╖рдг рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрддреА рд╣реИред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:- JavaFX 8 - рдУрд░реЗрдХрд▓ рд╕рд╣рд╛рдпрддрд╛ рдХреЗрдВрджреНрд░
- рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
- StreamAPI рдФрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрджреНрднреБрдд рд▓реЗрдЦ vedenin1980 -vyrazheniya