java模拟时间修改器的实现
结合之前所学的sql数据库,本人模仿了window的时间修改机制,制作了一个模拟修改器,本人修改了很久,找不到bug了,如果哪位大牛发现bug,不吝赐教!程序运行图如下:
实现不算复杂,代码如下:
package Exercise4; /** * 使用说明:必须安装sql数据库,导入driver类,新建一个ctong库,库中新建exercise4的表,表的属性是:hour(int),minute(int),second(int) * id(int,auto_increment,primary key);完成上述步骤后,自己开启sql数据库,use ctong,之后便可使用! */ import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.sql.ResultSet; import java.sql.Statement; import java.util.Date; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.JTextField; import javax.swing.border.BevelBorder; public class Exercise4 extends Mysql{ //时分秒的框 private JTextField field1,field2,field3; //hour表示当前时间,hour0用来存储时间差,hour1表示你修改后的最终时间,也是用来显示的时间 private static int hour,minute,second,hour0,minute0,second0,hour1,minute1,second1,copy_hour,copy_minute,copy_second; private JLabel Picture; private static boolean applyflag = false; public Exercise4(){ final JFrame frame = new JFrame("Exercise4(Time setting)"); //北边面板 JPanel northPanel = new JPanel(); Picture = new JLabel(); northPanel.add(Picture); //中间面板 JPanel centerPanel =createCenterPanel(); //南边面板 JPanel southPanel = new JPanel(); JButton ok = new JButton("OK"); JButton cancel = new JButton("Cancel"); JButton apply = new JButton("Apply"); ok.setMnemonic(KeyEvent.VK_ENTER); cancel.setMnemonic(KeyEvent.VK_BACK_SPACE); apply.setMnemonic(KeyEvent.VK_F1); ok.setPreferredSize(new Dimension(80,30)); cancel.setPreferredSize(new Dimension(80,30)); apply.setPreferredSize(new Dimension(80,30)); ok.setBackground(new Color(0,110,255)); cancel.setBackground(new Color(0,110,255)); apply.setBackground(new Color(0,110,255)); ok.setForeground(Color.WHITE); cancel.setForeground(Color.WHITE); apply.setForeground(Color.WHITE); southPanel.add(ok); southPanel.add(cancel); southPanel.add(apply); //界面属性 frame.setLayout(new GridLayout(3,1)); frame.setLocation(500,200); frame.setResizable(false); frame.setSize(300,300); frame.setUndecorated(true); frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME); frame.setIconImage(new ImageIcon("321.jpg").getImage()); frame.add(northPanel); frame.add(centerPanel); frame.add(southPanel); frame.setDefaultCloseOperation(3); frame.setVisible(true); //监听器 ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addTable(getHour(), getMinute(), getSecond(),1); timeSQL(); close0(); System.exit(0); } }); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(applyflag){ addTable(getHour(), getMinute(), getSecond(),1); } timeSQL(); close0(); System.exit(0); } }); apply.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { applyflag=true; JOptionPane.showMessageDialog(null, "时间已修改"); } }); } //中间面板的创建函数 private JPanel createCenterPanel() { JPanel initPanel = new JPanel(); JButton houradd = new JButton("▲"); JButton hoursub = new JButton("▼"); //快捷键,下同 houradd.setMnemonic(KeyEvent.VK_Q); hoursub.setMnemonic(KeyEvent.VK_A); //鼠标指针,下同 houradd.setCursor(new Cursor(12)); hoursub.setCursor(new Cursor(12)); //上下按钮面板,下同 JPanel hourPanel =new JPanel(new GridLayout(2,1)); houradd.setPreferredSize(new Dimension(40,10)); //按钮凸起,下同 houradd.setBorder(new BevelBorder(0)); hoursub.setBorder(new BevelBorder(0)); hourPanel.add(houradd); hourPanel.add(hoursub); JButton minuteadd = new JButton("▲"); JButton minutesub = new JButton("▼"); minuteadd.setMnemonic(KeyEvent.VK_W); minutesub.setMnemonic(KeyEvent.VK_S); minuteadd.setCursor(new Cursor(12)); minutesub.setCursor(new Cursor(12)); JPanel minutePanel =new JPanel(new GridLayout(2,1)); minuteadd.setPreferredSize(new Dimension(40,10)); minuteadd.setBorder(new BevelBorder(0)); minutesub.setBorder(new BevelBorder(0)); minutePanel.add(minuteadd); minutePanel.add(minutesub); JButton secondadd = new JButton("▲"); JButton secondsub = new JButton("▼"); secondadd.setMnemonic(KeyEvent.VK_E); secondsub.setMnemonic(KeyEvent.VK_D); secondadd.setCursor(new Cursor(12)); secondsub.setCursor(new Cursor(12)); JPanel secondPanel =new JPanel(new GridLayout(2,1)); secondadd.setPreferredSize(new Dimension(40,10)); secondadd.setBorder(new BevelBorder(0)); secondsub.setBorder(new BevelBorder(0)); secondPanel.add(secondadd); secondPanel.add(secondsub); field1 = new JTextField(2); field2 = new JTextField(2); field3 = new JTextField(2); //box,用来设置组件的间距 Box baseBox = Box.createHorizontalBox(); baseBox.add(field1); baseBox.add(hourPanel); baseBox.add(Box.createHorizontalStrut(10));//放置透明box来表示间距 baseBox.add(field2); baseBox.add(minutePanel); baseBox.add(Box.createHorizontalStrut(10)); baseBox.add(field3); baseBox.add(secondPanel); field1.setFont(new Font(null, Font.BOLD, 18)); field2.setFont(new Font(null, Font.BOLD, 18)); field3.setFont(new Font(null, Font.BOLD, 18)); //线程,用来及时显示时间变化 Thread thread = new Thread(new Runnable() { public void run() { hour = new Date().getHours(); minute = new Date().getMinutes(); second = new Date().getSeconds(); SelectTables(); SelectTables1(); SelectTables0(); DelData(1); DelData(2); changePic(); while(true){ if(copy_hour != getHour()){ copy_hour = getHour(); if(copy_hour>60){ field1.setText("0"); }else field1.setText(""+getHour()); } if(copy_minute != getMinute()){ copy_minute = getMinute(); if(copy_minute>60){ field2.setText("0"); int m = getHour(); setHour(++m); if(m>=24) setHour(0); } else field2.setText(""+getMinute()); } if(copy_second != getSecond()){ copy_second = getSecond(); field3.setText(""+ getSecond()); } secUp(); changePic(); //休眠1秒 try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); thread.start(); initPanel.add(baseBox); //监听器 houradd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { houUp(); } }); hoursub.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { houDown(); } }); minuteadd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { minUp(); } }); minutesub.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { minDown(); } }); secondadd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { secUp(); } }); secondsub.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { secDown(); } }); return initPanel; } //重写get,set方法 public void setHour(int hour) { field1.setText(""+hour); } public void setMinute(int minute) { field2.setText(""+minute); } public void setSecond(int second) { field3.setText(""+second); } public int getHour() { if(field1.getText().isEmpty()) setHour(0); return Integer.parseInt(field1.getText()); } public int getMinute() { if(field2.getText().isEmpty()) setMinute(0); return Integer.parseInt(field2.getText()); } public int getSecond(){ if(field3.getText().isEmpty()) setSecond(0); return Integer.parseInt(field3.getText()); } //以下6个方法表示相关时间的加减 public void houUp(){ int t = getHour(); setHour(++t); if(t>=24) setHour(0); } public void houDown(){ if(getHour()!=0){ int t = getHour(); setHour(--t); }else{ setHour(23); } } public void minUp(){ int t = getMinute(); setMinute(++t); if(t>=60) { setMinute(0); int m = getHour(); setHour(++m); if(m>=24) setHour(0); } } public void minDown(){ if(getMinute()!=0){ int t = getMinute(); setMinute(--t); }else{ setMinute(59); if(getHour()!=0){ int t = getHour(); setHour(--t); }else{ setHour(23); } } } public void secUp(){ int t = getSecond(); setSecond(++t); if(t>=60){ setSecond(0); int k = getMinute(); setMinute(++k); if(k>=60){ setMinute(0); int m = getHour(); setHour(++m); if(m>=24) setHour(0); } } } public void secDown(){ if(getSecond()!=0){ int t = getSecond(); setSecond(--t); }else{ setSecond(59); if(getMinute()!=0){ int t = getMinute(); setMinute(--t); }else{ setMinute(59); if(getHour()!=0){ int t = getHour(); setHour(--t); }else{ setHour(23); } } } } //改变图片 public void changePic(){ if(getHour()>=7&&getHour()<=11){ Picture.setIcon(new ImageIcon("zaoshang.jpg")); } else if(getHour()>11&&getHour()<=15){ Picture.setIcon(new ImageIcon("zhengwu.jpg")); } else if(getHour()>15&&getHour()<=18){ Picture.setIcon(new ImageIcon("huanghun.jpg")); } else { Picture.setIcon(new ImageIcon("wanshang.jpg")); } } //获取当前时间,并存入数据库 public void timeSQL(){ int hour = new Date().getHours(); int minute = new Date().getMinutes(); int second = new Date().getSeconds(); addTable(hour, minute, second, 2); } //获取时间差 public void SelectTables(){ try { // 执行sql语句 Statement statement = con.createStatement(); String sql = "select * from exercise4"; ResultSet rs = statement.executeQuery(sql); int hour1 = 0; int minute1 = 0; int second1 = 0; int id; while (rs.next()) { hour1 = rs.getInt("hour"); minute1 = rs.getInt("minute"); second1 = rs.getInt("second"); id=rs.getInt("id"); if(id==2){ hour0 = Math.abs(hour - hour1); minute0 = Math.abs(minute - minute1); second0 = Math.abs(second - second1); System.out.println("hour =" + hour0 + " minute=" + minute0+" second="+second0+" id="+id); } } rs.close(); } catch (Exception e) { e.printStackTrace(); } } //获取显示时间 public void SelectTables1(){ try { // 执行sql语句 Statement statement = con.createStatement(); String sql = "select * from exercise4"; ResultSet rs = statement.executeQuery(sql); hour1 = 0; minute1 = 0; second1 = 0; int id; while (rs.next()) { hour1 = rs.getInt("hour"); minute1 = rs.getInt("minute"); second1 = rs.getInt("second"); id=rs.getInt("id"); if(id==1){ hour1 += hour0; minute1 += minute0; second1 += second0; System.out.println("hour =" + hour1 + " minute=" + minute1+" second="+second1+" id="+id); copy_hour = hour1; copy_minute = minute1; copy_second = second1; field1.setText(""+hour1); field2.setText(""+minute1); field3.setText(""+second1); } } rs.close(); }catch (Exception e) { e.printStackTrace(); } } //对用户是否修改过时间进行判断 public void SelectTables0(){ try { // 执行sql语句 Statement statement = con.createStatement(); String sql = "select * from exercise4"; ResultSet rs = statement.executeQuery(sql); int n = 0; while(rs.next()) { n++; } if(n<=1){ copy_hour = hour; copy_minute = minute; copy_second = second; field1.setText(""+hour); field2.setText(""+minute); field3.setText(""+second); } rs.close(); }catch (Exception e) { e.printStackTrace(); } } /** * 主函数 * @param ctong */ public static void main(String[] args) { new Exercise4(); } }
package Exercise4; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * 1.增加数据-insert into game(name,type) values(?,?) * public void dd2Table(String name,String type); * public void add2Table(String name,String type,int id); * 2.删除数据-delete from game where id = ? * public void DelData(int id) * 3.查找数据-select * from game * public void SelectTables() * 4.修改数据-update game set name=?,type=? where id=? * public void upData(String name,String type,int id) * * * * @author ctong * */ public class Mysql { /* 数据库加载固定属性 */ //mySql 中驱动类的名字就是其驱动包中的com.mysql.jdbc.Driver.class 类。 String driver="com.mysql.jdbc.Driver"; Connection con; //jdbc:mysql://ip 地址: 端口号/数据库名字 String url="jdbc:mysql://localhost:3306/ctong"; String user="root"; //连接上数据库mysql public Mysql() { try { Class.forName(driver); //第三个属性是密码 con=DriverManager.getConnection(url,user,""); if(!con.isClosed()) System.out.println("连接成功"); } catch (Exception e) { e.printStackTrace(); } } //在表末增加一栏数据 public void addTable(int hour,int minute , int second) { try { //预处理命令添加 PreparedStatement sql; sql = con.prepareStatement("insert into exercise4(hour,minute,second) values(?,?,?)"); sql.setInt(1,hour); sql.setInt(2,minute); sql.setInt(3,second); sql.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } //增加一栏数据-----指定id public void addTable(int hour,int minute , int second,int id) { try { //预处理命令添加 PreparedStatement sql; sql = con.prepareStatement("insert into exercise4(hour,minute,second,id) values(?,?,?,?)"); sql.setInt(1,hour); sql.setInt(2,minute); sql.setInt(3,second); sql.setInt(4, id); sql.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } //查找表中所有数据 public void SelectTables(){ try { // 执行sql语句 Statement statement = con.createStatement(); String sql = "select * from exercise4"; ResultSet rs = statement.executeQuery(sql); int hour = 0; int minute = 0; int second = 0; int id; while (rs.next()) { hour = rs.getInt("hour"); minute = rs.getInt("minute"); second = rs.getInt("second"); id=rs.getInt("id"); System.out.println("hour =" + hour + " minute=" + minute+" second="+second+" id="+id); } rs.close(); } catch (Exception e) { e.printStackTrace(); } } //删除一行数据 public void DelData(int id) { try { PreparedStatement sql; sql = con.prepareStatement("delete from exercise4 where id = ?"); sql.setInt(1,id); sql.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } //修改一栏数据 public void upData(int hour,int minute ,int second,int id) { try { PreparedStatement sql; sql = con.prepareStatement("update exercise4 set hour=?,minute=?,second=?, where id=?"); sql.setInt(1,hour); sql.setInt(2,minute); sql.setInt(3,second); sql.setInt(4, id); sql.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } public void close0(){ try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } }
相关图片就不提供了,谢谢观看!
相关推荐
文献综述 计算机科学与技术 基于 JAVA 的模拟 ATM 系统的设计与实现 ATM 是 Automatic Teller Machine 的缩写,即自动柜员机。它是有计算机控制的持 卡人自我服务型的金融专用设备。 ATM 机可以向持卡人提供提款、...
内外网切换工具,用java写的,目前在XP上可以使用!
关于java出租车计价器设计与实现 总共4个模块 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据库中添加出租车的...
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。...
https://blog.csdn.net/Ronny_xie/article/details/89221377 2019-4-12正常使用,若不能使用自行理解代码意思修改其中的一些指定器即可
模拟实现电风扇,可以调 3 档速度(慢速、中速、快速);开关按钮;定时吹风;描述 风扇的扇叶大小、颜色等。 设计Fan 类,属性包括:3 个常量 SLOW (1)、MEDIUM(2)、FA ST(3)代表风扇的 速度;1 个int 属性...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码...
3.1通过java多线程,模拟出租车在路上的情景 3.2通过距离计费的方式,将订单的时间,乘客的信息,订单的价格等插入数据库中 (4)出租车计价系统可以实现订单信息的维护 4.1订单信息的查询:通过数据库...
关于java出租车计价器设计与实现 总共4个模块 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据库中...
关于java出租车计价器设计与实现 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据库中添加出租车的车型,车号...
signByIF.java 用if语句实现符号函数示例 triangleStar.java 输出一个由*组成的直角三角形 upperToLowCase.java 大写转换成小写 variableScopeExample.java 变量使用范围示例 第3章 示例描述:本章学习对象和类...
关于java出租车计价器设计与实现 总共4个模块 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据库中...
编写程序完成单处理器系统中的进程调度, 要求实现时间片轮转、 优先数、 最短进程优 先和最短剩余时间优先四种调度算法。 实验具体包括: 首先确定进程控制块的内容, 进程控 制块的组成方式; 然后完成进程创建...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的...
该文本编辑器实现功能较为简易,功能为新建,保存,打开,退出,修改背景颜色和字体颜色。图形界面基于swing开发工具包,使用该程序请先给IDE添加此包。
模拟实现电风扇,可以调3 档速度(慢速、中速、快速);开关按钮;定时吹风;描述 风扇的扇叶大小、颜色等。 设计Fan 类,属性包括:3 个常量SLOW(1)、MEDIUM(2)、FAST(3)代表风扇的 速度;1 个int 属性speed ...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码...
Java写的ATM机取款模拟程序.zip Java写的一个mp3播放器.rar Java写的图片幻灯片切换特效.rar Java写的天气预报软件.rar Java写的巨型LCD液晶时钟显示屏.rar JAVA图书馆管理系统源码.rar Java图像文件的缩小与放大....
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的...