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();
}
}
}