Связывание интерфейса с работой программы - Java

Узнай цену своей работы

Формулировка задачи:

Написал 2 класса, которые отвечают за 2 разных окна. Не знаю только как сделать, чтобы по нажатию на кнопку в первом одном окне, оно закрывалось и открывалось второе. Вообще, я только начал изучать Java и отчетливо чувствую, что весь мой код - это целая скульптура из костылей. Как я понял, мне вообще стоило сделать родительский объект окна с PrimaryStage и 2 дочерних объекта с разными сценами, которые бы заменяли друг друга без закрытия окна. Вот только как это сделать я не знаю. Ниже приведен код обоих классов и класс мэйн, который в моем представлении является контроллером программы. Вопрос номер один описан выше - надо вызвать окно два после нажатия на кнопку в окне один. Но больше меня интересует показать, как надо было сделать правильно.
Листинг программы
  1. package sample;
  2. import javafx.application.Application;
  3. import javafx.event.EventHandler;
  4. import javafx.geometry.Insets;
  5. import javafx.geometry.Orientation;
  6. import javafx.geometry.Pos;
  7. import javafx.scene.Scene;
  8. import javafx.scene.control.Button;
  9. import javafx.scene.control.Label;
  10. import javafx.scene.control.PasswordField;
  11. import javafx.scene.control.TextField;
  12. import javafx.scene.input.MouseEvent;
  13. import javafx.scene.layout.*;
  14. import javafx.scene.paint.Color;
  15. import javafx.stage.Stage;
  16. import java.io.FileNotFoundException;
  17. public class Main_win extends Application {
  18. String log = "";
  19. String pas = "";
  20. @Override
  21. public void start(Stage startwin) {
  22. startwin.setTitle("NNP");
  23. FlowPane root = new FlowPane(Orientation.VERTICAL);
  24. Scene scene = new Scene(root, 250, 500, Color.ALICEBLUE);
  25. root.setAlignment(Pos.CENTER);
  26. Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
  27. root.setBackground(back);
  28. startwin.setScene(scene);
  29. Label wmes = new Label();
  30. wmes.setText("Welcome to the nnp!");
  31. Label logl = new Label();
  32. logl.setText("Login:");
  33. TextField login = new TextField();
  34. login.setPromptText("Enter your Login");
  35. Label pasl = new Label();
  36. pasl.setText("Password:");
  37. PasswordField password = new PasswordField();
  38. password.setPromptText("Enter Password");
  39. Button enter = new Button();
  40. enter.setText("Enter");
  41. enter.setOnMouseClicked(new EventHandler<MouseEvent>(){
  42. public void handle(MouseEvent event) {
  43. log = login.getText();
  44. System.out.println(log);
  45. pas = password.getText();
  46. System.out.println(pas);
  47. }
  48. });
  49. root.getChildren().addAll(wmes,logl,login,pasl,password,enter);
  50. startwin.show();
  51. }
  52.  
  53. public static void main(String[] args) {
  54. launch(args);
  55. }
  56. }
Листинг программы
  1. package sample;
  2. import javafx.application.Application;
  3. import javafx.geometry.Insets;
  4. import javafx.geometry.Pos;
  5. import javafx.scene.Scene;
  6. import javafx.scene.image.Image;
  7. import javafx.scene.image.ImageView;
  8. import javafx.scene.layout.*;
  9. import javafx.scene.paint.Color;
  10. import javafx.stage.Stage;
  11. import java.io.FileInputStream;
  12. import java.io.FileNotFoundException;
  13. public class LoadScreen extends Application {
  14. @Override public void start(Stage stage) throws FileNotFoundException {
  15. // load the image
  16. Image image = new Image(new FileInputStream("C:\\Users\\Андрей\\IdeaProjects\\nnp\\src\\sample\\load.gif"));
  17. // simple displays ImageView the image as is
  18. ImageView iv1 = new ImageView();
  19. iv1.setImage(image);
  20. FlowPane root = new FlowPane();
  21. Scene scene = new Scene(root, 250, 500);
  22. scene.setFill(Color.ALICEBLUE);
  23. Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
  24. root.setBackground(back);
  25. HBox box = new HBox();
  26. box.getChildren().add(iv1);
  27. root.getChildren().add(box);
  28. stage.setTitle("Authentication");
  29. root.setAlignment(Pos.CENTER);
  30. stage.setScene(scene);
  31. stage.show();
  32. }
  33. public static void main(String[] args) {
  34. Application.launch(args);
  35. }
  36. }
Листинг программы
  1. package sample;
  2. import java.io.FileNotFoundException;
  3. import javafx.application.Application;
  4. import javafx.stage.Stage;
  5. /**
  6. * Created by Андрей Солодовников on 07.05.2016.
  7. */
  8. public class Main extends Application{
  9. public static boolean flag = false;
  10. @Override
  11. public void start(Stage startwin) throws FileNotFoundException {
  12. Stage win = new Stage();
  13. Main_win window = new Main_win();
  14. window.start(win);
  15. LoadScreen lwin = new LoadScreen();
  16. lwin.start(startwin);
  17. }
  18. public static void main(String args[]){
  19. launch(args);
  20. }
  21. }

Решение задачи: «Связывание интерфейса с работой программы»

textual
Листинг программы
  1. /**
  2.  *
  3.  * @author Nicholas White
  4.  */
  5. public class LoadScreen extends Stage {
  6.    
  7.     private final Image image = new Image(getClass().getResourceAsStream("back.jpg"));
  8.  
  9.     public LoadScreen() {
  10.          final ImageView iv1 = new ImageView(image);
  11.          FlowPane root = new FlowPane();
  12.           Scene scene = new Scene(root, 250, 500);
  13.           scene.setFill(Color.ALICEBLUE);
  14.           Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
  15.           root.setBackground(back);
  16.           HBox box = new HBox();
  17.            box.getChildren().add(iv1);
  18.         root.getChildren().add(box);
  19.         root.setAlignment(Pos.CENTER);
  20.         setScene(scene);
  21.         setTitle("Authentication");
  22.         show();
  23.     }
  24.    
  25. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут