Связывание интерфейса с работой программы - Java
Формулировка задачи:
Написал 2 класса, которые отвечают за 2 разных окна. Не знаю только как сделать, чтобы по нажатию на кнопку в первом одном окне, оно закрывалось и открывалось второе.
Вообще, я только начал изучать Java и отчетливо чувствую, что весь мой код - это целая скульптура из костылей. Как я понял, мне вообще стоило сделать родительский объект окна с PrimaryStage и 2 дочерних объекта с разными сценами, которые бы заменяли друг друга без закрытия окна. Вот только как это сделать я не знаю. Ниже приведен код обоих классов и класс мэйн, который в моем представлении является контроллером программы.
Вопрос номер один описан выше - надо вызвать окно два после нажатия на кнопку в окне один. Но больше меня интересует показать, как надо было сделать правильно.
Листинг программы
- package sample;
- import javafx.application.Application;
- import javafx.event.EventHandler;
- import javafx.geometry.Insets;
- import javafx.geometry.Orientation;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.PasswordField;
- import javafx.scene.control.TextField;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.layout.*;
- import javafx.scene.paint.Color;
- import javafx.stage.Stage;
- import java.io.FileNotFoundException;
- public class Main_win extends Application {
- String log = "";
- String pas = "";
- @Override
- public void start(Stage startwin) {
- startwin.setTitle("NNP");
- FlowPane root = new FlowPane(Orientation.VERTICAL);
- Scene scene = new Scene(root, 250, 500, Color.ALICEBLUE);
- root.setAlignment(Pos.CENTER);
- Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
- root.setBackground(back);
- startwin.setScene(scene);
- Label wmes = new Label();
- wmes.setText("Welcome to the nnp!");
- Label logl = new Label();
- logl.setText("Login:");
- TextField login = new TextField();
- login.setPromptText("Enter your Login");
- Label pasl = new Label();
- pasl.setText("Password:");
- PasswordField password = new PasswordField();
- password.setPromptText("Enter Password");
- Button enter = new Button();
- enter.setText("Enter");
- enter.setOnMouseClicked(new EventHandler<MouseEvent>(){
- public void handle(MouseEvent event) {
- log = login.getText();
- System.out.println(log);
- pas = password.getText();
- System.out.println(pas);
- }
- });
- root.getChildren().addAll(wmes,logl,login,pasl,password,enter);
- startwin.show();
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Листинг программы
- package sample;
- import javafx.application.Application;
- import javafx.geometry.Insets;
- import javafx.geometry.Pos;
- import javafx.scene.Scene;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.*;
- import javafx.scene.paint.Color;
- import javafx.stage.Stage;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- public class LoadScreen extends Application {
- @Override public void start(Stage stage) throws FileNotFoundException {
- // load the image
- Image image = new Image(new FileInputStream("C:\\Users\\Андрей\\IdeaProjects\\nnp\\src\\sample\\load.gif"));
- // simple displays ImageView the image as is
- ImageView iv1 = new ImageView();
- iv1.setImage(image);
- FlowPane root = new FlowPane();
- Scene scene = new Scene(root, 250, 500);
- scene.setFill(Color.ALICEBLUE);
- Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
- root.setBackground(back);
- HBox box = new HBox();
- box.getChildren().add(iv1);
- root.getChildren().add(box);
- stage.setTitle("Authentication");
- root.setAlignment(Pos.CENTER);
- stage.setScene(scene);
- stage.show();
- }
- public static void main(String[] args) {
- Application.launch(args);
- }
- }
Листинг программы
- package sample;
- import java.io.FileNotFoundException;
- import javafx.application.Application;
- import javafx.stage.Stage;
- /**
- * Created by Андрей Солодовников on 07.05.2016.
- */
- public class Main extends Application{
- public static boolean flag = false;
- @Override
- public void start(Stage startwin) throws FileNotFoundException {
- Stage win = new Stage();
- Main_win window = new Main_win();
- window.start(win);
- LoadScreen lwin = new LoadScreen();
- lwin.start(startwin);
- }
- public static void main(String args[]){
- launch(args);
- }
- }
Решение задачи: «Связывание интерфейса с работой программы»
textual
Листинг программы
- /**
- *
- * @author Nicholas White
- */
- public class LoadScreen extends Stage {
- private final Image image = new Image(getClass().getResourceAsStream("back.jpg"));
- public LoadScreen() {
- final ImageView iv1 = new ImageView(image);
- FlowPane root = new FlowPane();
- Scene scene = new Scene(root, 250, 500);
- scene.setFill(Color.ALICEBLUE);
- Background back = new Background(new BackgroundFill(Color.TRANSPARENT,new CornerRadii(10),new Insets(5)));
- root.setBackground(back);
- HBox box = new HBox();
- box.getChildren().add(iv1);
- root.getChildren().add(box);
- root.setAlignment(Pos.CENTER);
- setScene(scene);
- setTitle("Authentication");
- show();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д