package sample; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.shape.Line; import javafx.scene.text.Text; import java.text.SimpleDateFormat; import java.util.Calendar; import static java.lang.Math.*; public class Controller { @FXML //关联Fxml private Line line_hour; @FXML private Line line_minute; @FXML private Line line_second; @FXML private Text text_date; @FXML private Text text_time; @FXML private Button btn_start; @FXML private Button btn_close; private boolean clockState = false;//时钟状态 //当前的时间 private Calendar dateTime; private int hours; private int minutes; private int seconds; //格式化时间日期 private static SimpleDateFormat dateDF = new SimpleDateFormat("yyyy-MM-dd"); private static SimpleDateFormat timeDF = new SimpleDateFormat("HH:mm:ss"); //计算三个指针位置 private static double centerX = 0; private static double centerY = 0; private static double hourLength = 150; private static double minuteLength = 200; private static double secondLength = 240; //设一个全局变量p2i private static double p2i = 6.28; //时钟的点击事件 public void startClock() { clockState = true; clock1(); } public void closeClock() { clockState = false; clock1(); } //获取时间 private void setTime() { this.dateTime = Calendar.getInstance(); this.hours = this.dateTime.get(Calendar.HOUR); this.minutes = this.dateTime.get(Calendar.MINUTE); this.seconds = this.dateTime.get(Calendar.SECOND); } //显示start、close按钮交叉显示 //即点击start按钮后,start按钮看不见,而close看得见 // 点击close按钮后,close按钮看不见,而start看得见 private void showButton() { btn_close.setVisible(clockState); btn_start.setVisible(!clockState); } //改变时钟指针的结束坐标(时钟指针移动算法),导入java.lang.math包 private void setClockPointer() { double hourX = centerX + hourLength * sin((hours + minutes / 60) * p2i / 12); double hourY = centerY - hourLength * cos((hours + minutes / 60) * p2i / 12); double minuteX = centerX + minuteLength * sin(minutes * p2i / 60); double minuteY = centerY - minuteLength * cos(minutes * p2i / 60); double secondX = centerX + secondLength * sin(seconds * p2i / 60); double secondY = centerY - secondLength * cos(seconds * p2i / 60); line_hour.setEndX(hourX); line_hour.setEndY(hourY); line_minute.setEndX(minuteX); line_minute.setEndY(minuteY); line_second.setEndX(secondX); line_second.setEndY(secondY); } //更新Text文本框的日期时间 private void setTextDateTime() { text_time.setText("时间: " + timeDF.format(dateTime.getTime())); text_date.setText("日期: " + dateDF.format(dateTime.getTime())); } /**private void clock() { showButton(); if (clockState) new Thread(() -> { try { while (clockState) { setTime();//刷新当前时间 setTextDateTime();//刷新文本框内容 setClockPointer();//刷新指针的位置 Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } }).start(); }**/ //对clock的重写 private void clock1(){ showButton(); if (clockState) new Thread( new Runnable() { @Override public void run() { try{ while (clockState){ setTime(); setClockPointer(); setTextDateTime(); Thread.sleep(1000); } }catch (InterruptedException e){ e.printStackTrace(); } } } ).start(); } }
最近下载更多
段朝洪 LV15
2023年12月7日
29723247 LV8
2023年9月4日
ass1111111111 LV1
2022年12月13日
peach0607 LV1
2022年3月1日
Harry233 LV1
2020年8月14日
823333 LV1
2019年12月24日
wodezui6 LV9
2019年12月5日
asdb大sad LV1
2019年12月1日
x794991366 LV2
2018年12月1日
734239366 LV8
2018年11月1日
最近浏览更多
飞梦ff LV8
2月26日
shiaomon
2023年12月14日
暂无贡献等级
段朝洪 LV15
2023年12月7日
29723247 LV8
2023年9月4日
微信网友_6425728903319552 LV1
2023年4月9日
Dominick LV14
2023年4月3日
xxbvcsudk
2023年2月15日
暂无贡献等级
zyf4728890
2023年1月3日
暂无贡献等级
ass1111111111 LV1
2022年12月13日
微信网友_6248713511227392 LV11
2022年12月5日