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下的Class代码查看器与修改器是用于深入理解与操作Java字节码的重要工具,它们可以帮助开发者查看并可能修改已编译的Java类文件(即.class文件),这对于调试、逆向工程、性能优化以及理解Java运行时机制具有...
总之,使用Java模拟jQuery选择器主要涉及HTML文档的解析、节点过滤以及操作。通过`org.htmlparser.Parser`库,我们可以实现对HTML文档的解析,并利用自定义的过滤器来模拟jQuery选择器的功能。然而,由于JavaScript...
总结来说,这个项目通过Java编程语言,提供了对操作系统页面调度的模拟,有助于学习者深入理解页面调度的工作原理,同时也可以通过修改和扩展代码,研究不同调度策略的性能差异。对于操作系统、内存管理和Java编程的...
Java实现的ATM模拟系统是一个基于Java编程语言的软件应用,它通过AWT和Swing图形用户界面(GUI)库来构建用户交互界面,模仿实际银行自动取款机的功能。这个系统与Microsoft Office Access数据库连接,用于存储和...
在这个场景中,我们关注的是一个基于Java的实现,名为"java模拟资源管理器"。这个项目可能涉及文件系统浏览、文件操作、目录管理等功能,使用户能够以图形化的方式查看和管理他们的文件。 首先,让我们详细了解一下...
通过以上知识点的应用,我们可以构建一个功能丰富的Java模拟画图应用,不仅提供基本的绘图功能,还能实现图像编辑、保存与加载等高级特性。这个过程需要理解Java的GUI编程,掌握图形绘制的原理,以及熟悉事件处理...
Java模拟MySQL是一个编程项目,旨在使用Java语言创建一个图形用户界面(GUI)工具,以便用户可以像使用MySQL Front等数据库管理软件一样与MySQL数据库进行交互。这个项目的核心目标是为开发者提供一个轻量级的、纯...
【JAVA模拟记事本(Jbuilder)】是一款使用JAVA编程语言,并通过Jbuilder开发环境构建的简易文本编辑器。它具备日常记事本的基本功能,旨在提供一个轻量级的文本处理工具,便于用户进行文字编辑、存储和管理。在这款...
在本文中,我们将深入探讨如何利用Java事件处理机制实现录制和回放功能,这种功能常见于GUI测试工具中,用于捕获用户操作并在代码修改后自动回放这些操作。 1. Java 事件介绍 - **事件是什么**:在Java中,事件是...
Java自制魔方模拟游戏是一种基于编程技术实现的互动娱乐软件,它允许用户在虚拟环境中体验还原魔方的乐趣。在这个项目中,主要使用了Java编程语言,结合3D图形库来创建逼真的魔方模型。下面我们将详细探讨这个项目的...
在Java编程语言中,模拟Windows计算器是一个常见的练习项目,它能帮助开发者熟悉GUI(图形用户界面)编程和事件处理。这个项目通常会涉及到Swing或JavaFX库来创建用户界面,以及基本的数学运算实现计算器的功能。...
### Java 风扇旋转程序实现详解 #### 一、程序概述 本程序是一个基于Java Swing框架开发的小型应用程序,其主要功能是模拟一个可控制的风扇,支持启动、停止、加速、减速以及反转等基本操作。通过使用`javax.swing...
在本项目中,"Java模拟交通路况"是一个基于JAVA编程语言的大作业,旨在通过编程实现对交通路况的模拟。这个项目可能包含多个方面,比如车辆的移动、红绿灯控制、交通规则的遵循等,这些都是计算机科学中的常见问题,...
Java动态代理是Java提供的一种在运行时创建新类型对象的技术,它可以让我们在不修改原有代码的情况下,对方法的调用进行增强,这正是Spring AOP(面向切面编程)的核心思想。Spring AOP通过代理模式实现了对业务逻辑...
java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码...
操作系统文件存储结构模拟Java程序是将计算机操作系统中的文件系统实现为一个Java应用程序,它能够模拟“我的电脑”或“文件资源管理器”的基本功能。在这个程序中,用户可以浏览、创建、删除和修改文件及目录,理解...
通过参与这个坦克模拟程序的修改和学习,你可以深入理解Java编程的基本概念,同时也能掌握游戏开发的实践经验,这对于提高编程技能和理解软件工程流程都是非常有帮助的。如果你对游戏开发感兴趣,这是一个很好的起点...
### JAVA模拟题答案解析 #### 一、选择题解析 **1. 面向对象程序设计语言的三个基本特征是什么?** 正确答案是 **D. 封装、继承和多态**。 - **封装**: 是面向对象编程的一个基本原则,指的是将数据与操作这些...
关于java出租车计价器设计与实现 总共4个模块 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据库中添加出租车的...
内外网切换工具,用java写的,目前在XP上可以使用!