2024/04/28总结

发布于:2024-04-29 ⋅ 阅读:(31) ⋅ 点赞:(0)

javxfx项目小结:

计时器: 

   try {
            countdown = 60;
            stale_dated = false;// 禁用按钮
            if (!isTimerRunning) { // 如果定时器没有在运行
                timeline = new Timeline(new KeyFrame(Duration.seconds(1), e -> {
                    countdown--;
                    mailbutton.setText(countdown + "秒");
                    if (countdown <= 0) {
                        mailbutton.setText("发送验证");
                        isTimerRunning = true;
                        stale_dated = true;
                    }
                }));
                timeline.setCycleCount(Timeline.INDEFINITE);
                timeline.play();
                isTimerRunning = true; // 定时器已经启动,将状态设置为运行中
            }

头像点击事件:

public void imagebutton(MouseEvent event) {     //图片点击要这样设置才行(导包要导对)

        //真正的更换图片就是把图片复制并放到一个指定的文件夹里,然后数据库就是存的这个文件夹位置

        // 设置文件过滤器                      //设置了后就只能看见图片的文件了
        FileChooser.ExtensionFilter extFilter =
                new FileChooser.ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif");
        fileChooser.getExtensionFilters().add(extFilter);

        // 显示文件选择对话框                                    //打开文件对话框
        Stage stage = (Stage) headimage.getScene().getWindow();
        File selectedFile = fileChooser.showOpenDialog(stage);
        
            Image selectedImage = new Image(selectedFile.toURI().toString());
            headimage.setImage(selectedImage);
            default_image = selectedFile.getAbsolutePath();
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                conn = DriverManager.getConnection(url, user, password);
                String sql = "update students set image_path = ? where suersname = ?";
                PreparedStatement pstmt = conn.prepareStatement(sql);
                pstmt.setString(1, default_image);
                pstmt.setString(2, suername);
                pstmt.executeUpdate();
                conn.close();
                pstmt.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }

长连接心跳:
 

package sample;

import javafx.event.EventHandler;
import javafx.stage.WindowEvent;
import sample.stage.myStage;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.concurrent.atomic.AtomicBoolean;

public class heart_Thread extends Thread{
    @Override
    public void run() {
        AtomicBoolean isRunning = new AtomicBoolean(true);
        try {

            Socket Second_socket = new Socket("127.0.0.1", 10090);
            String Second_judgment = "heart";
            ObjectOutputStream Second_oos = new ObjectOutputStream(Second_socket.getOutputStream());
            EventHandler<WindowEvent> onCloseHandler = event -> {
                try {
                    Second_oos.writeObject("222");
                    Second_oos.close();
                    Second_oos.close();
                    isRunning.set(false);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            };
            while (isRunning.get()) {
                // 设置关闭事件监听器
                myStage.stage.setOnCloseRequest(onCloseHandler);

                // 发送标志
                Second_oos.writeObject("heart");

                // 休眠1秒钟
                Thread.sleep(1000);
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}