用java写修改器_java模拟时间修改器的实现

java模拟时间修改器的实现

结合之前所学的sql数据库,本人模仿了window的时间修改机制,制作了一个模拟修改器,本人修改了很久,找不到bug了,如果哪位大牛发现bug,不吝赐教!程序运行图如下:

c082fe88417f8d02cc6a7fa9e07cbae1.png

实现不算复杂,代码如下:

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

}

}

}

相关图片就不提供了,谢谢观看!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值