JavaFX作业

前言:

        在写这个作业之前,尝试在JavaFX中添加全局快捷键,测试了大概5个小时,到处找教程换版本,结果最后还是没找到支持Java8以上的(也有可能是我自己的问题),最后只能退而求其次,用jintellitype这个库来在原生swing里面添加了全局快捷键,算是圆了我对SAO Utils的一个执念吧,虽然实际上相差甚远。

        准备顶着数值分析考试和六级的压力(其实六级也没什么压力,主要室友太卷六级了。。人各有志,但是数值分析真不会啊)把这次的Java作业做了,虽然我明显感觉老师进度太快了,我群里面大三的都才学到这里,。。这才第七周啊,而且老师我只是大二啊,你这,,你这,,太夸张了这速度,还有就是讲课讲软件开发这块的注意事项,我个人觉得不如先确保我能开发一个软件比较好,。好了,废话就到这里。

作业:

1.安装向导

        提供一个setup.jar,模拟常见的软件安装交互特性。

        主要功能:上一步下一步的页面切换,按钮交互响应,页面创建

2.广播

        制作一个可以向子窗体同步信息的父窗体,内容由文本框输入,父窗体上放一个广播按钮和一个子窗体创建按钮,广播按钮点击后可以让父窗体输入文本显示到所有子窗体上,子窗体创建按钮点击后创建新的窗体(点击一次创建一次)。

        主要功能:文本输入,信息同步,按钮交互响应,窗体创建

3.监控

        制作一个可以收集自己创建的子窗体信息的父窗体,父窗体上放一个子窗体创建按钮,点击后创建新的窗体(点击一次创建一次),每个子窗体上都有一个按钮,点击后主窗体显示各窗体按钮各自的点击次数以及总和。

        主要功能:窗体创建,信息传递,按钮交互响应,计数计算

4.双向实时通讯

        创建一个主窗体和一个从窗体,主窗体上显示“已完成了   %”,从窗体上显示一个进度条(初始为0,在下方显示百分比)和两个按钮,一个增加按钮一个减少按钮,点击增加按钮,进度条增加1%,点击减少,进度条减少1%,从窗体的进度条和主窗体显示的  %相关联,同样的,主窗体上也有这两个按键。

        主要功能:按钮响应,信息双向同步,计数

5.微信群模拟

        用JavaFX模拟微信群聊功能。

        程序运行时可以动态创建多个窗体,在创建窗体时,选择一个群加入,每个窗体代表一个人,使用窗体背景色区分开各个群,在群内部,群成员发送的消息只有群成员间能看到。

完成(慢慢更新ing)

        1.详解有时间写

package com.example.test10;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class SetupWizard extends Application {
    private Stage stage;
    private int currentPage;
    private VBox pageContainer;
    private final Button backButton = new Button("Back");
    private final Button nextButton = new Button("Next");

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        stage = primaryStage;
        stage.setTitle("Setup Wizard");

        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 400, 300);

        // 创建页面容器
        pageContainer = new VBox();
        pageContainer.setPadding(new Insets(20));
        pageContainer.setAlignment(Pos.CENTER_LEFT);
        // 创建页面
        VBox page1 = createPage1();
        VBox page2 = createPage2();
        VBox page3 = createPage3();

        // 添加页面到容器
        pageContainer.getChildren().addAll(page1, page2, page3);

        // 设置当前页面
        currentPage = 0;
        showCurrentPage();

        // 创建按钮容器
        HBox buttonContainer = new HBox();
        buttonContainer.setPadding(new Insets(20));
        buttonContainer.setAlignment(Pos.BOTTOM_RIGHT);

        // 设置布局
        HBox.setMargin(backButton, new Insets(0, 10, 0, 0));
        backButton.setOnAction(event -> showPreviousPage());
        nextButton.setOnAction(event -> showNextPage());

        buttonContainer.getChildren().addAll(backButton, nextButton);
        root.setCenter(pageContainer);
        root.setBottom(buttonContainer);
        nextButton.setDisable(true);
        stage.setScene(scene);
        stage.show();
    }

    private VBox createPage1() {
        VBox page = new VBox();
        page.setSpacing(10);
        Label label = new Label("Please read and accept the agreement:");
        CheckBox checkBox = new CheckBox("I agree to the above terms and conditions");
        checkBox.setOnAction(event -> nextButton.setDisable(!checkBox.isSelected()));
        page.getChildren().addAll(label, checkBox);
        return page;
    }

    private VBox createPage2() {
        VBox page = new VBox();
        page.setSpacing(10);
        Label label = new Label("Please enter the installation directory:");
        TextField directoryField = new TextField();
        directoryField.textProperty().addListener((observable, oldValue, newValue) ->
                nextButton.setDisable(newValue.isEmpty()));
        page.getChildren().addAll(label, directoryField);
        return page;
    }

    private VBox createPage3() {
        VBox page = new VBox();
        page.setSpacing(10);
        Label label = new Label("Please select an option:");
        Button exitButton = new Button("Exit");
        exitButton.setOnAction(event -> stage.close());

        HBox buttonContainer = new HBox();
        buttonContainer.setAlignment(Pos.BOTTOM_RIGHT);
        buttonContainer.getChildren().addAll(backButton, exitButton);

        page.getChildren().addAll(label, buttonContainer);
        return page;
    }

    private void showPreviousPage() {
        if (currentPage > 0) {
            currentPage--;
            showCurrentPage();
        }
    }

    private void showNextPage() {
        if (currentPage < pageContainer.getChildren().size() - 1) {
            currentPage++;
            showCurrentPage();
            nextButton.setDisable(true);
        }
    }

    private void showCurrentPage() {
        pageContainer.getChildren().forEach(page -> page.setVisible(false));
        pageContainer.getChildren().get(currentPage).setVisible(true);

        backButton.setDisable(currentPage == 0);
        nextButton.setDisable(currentPage == pageContainer.getChildren().size() - 1);
    }
}

你可能感兴趣的:(开发语言,java)