使用mvc模式,反射,jdbc等技术完成对数据库的访问(手机信息管理系统案例)

目录

手机信息管理系统

功能要求

数据库设计

数据库代码

具体实现步骤

项目目录结构 

具体实现代码

1.test类

 2.数据库工具类及配置文件

3.view层(视图层)

4.service层

5.Dao层

6.实体类


手机信息管理系统

  • 功能要求

使用 Java语言实现手机信息管理的功能,Oracle11g作为数据库,主菜单包括菜单项:如图效果(1,2,3,4,5分别 实现功能,0的时候退出系统,其它的输入提示输入错误,请重新输入)

  • 数据库设计

表名

Mobile

中文表名称

手机信息表

序号

字段名称

 

字段说明

类型

长度

 

属性

备注

1

ID

序号

number

 

序列

主键,非空

2

Brand

品牌

Varchar2

50

 

非空

3

Model

型号

Varchar2

50

 

非空

4

Price

价格

Number(9,2)

 

 

非空

5

Count

数量

number

 

 

非空

6

Version

版本

Varchar2

50

 

非空

 

 

 

 

 

 

 

 

 

数据库代码

/*
Navicat MySQL Data Transfer

Source Server         : localhost_3306
Source Server Version : 50527
Source Host           : localhost:3306
Source Database       : mob

Target Server Type    : MYSQL
Target Server Version : 50527
File Encoding         : 65001

Date: 2019-04-28 18:59:04
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for mobile
-- ----------------------------
DROP TABLE IF EXISTS `mobile`;
CREATE TABLE `mobile` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号',
  `brand` varchar(50) NOT NULL COMMENT '品牌',
  `model` varchar(50) NOT NULL COMMENT '型号',
  `price` double(9,2) NOT NULL COMMENT '价格',
  `count` int(11) NOT NULL COMMENT '数量',
  `version` varchar(50) NOT NULL COMMENT '版本',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of mobile
-- ----------------------------
INSERT INTO `mobile` VALUES ('1', 'Apple', 'IPHone4S', '4999.00', '3', '国行');
INSERT INTO `mobile` VALUES ('2', 'SONY', 'Z3L55', '4999.00', '10', '智享版');
INSERT INTO `mobile` VALUES ('3', '华为', 'AscendP7', '2388.00', '3', '16G版');

 

具体实现步骤

  1. 创建数据库表Mobile,并输入至少3条测试数据:
  2. 在eclipse中创建Java项目
  3. 完成信息查询功能,如下图所示

  1. 完成信息录入的功能。效果如下图

  1. 完成删除的功能,效果图如下所示;要删除的手机编号不存在

  1. 完成删除的功能,效果图如下所示;要删除的手机编号存在

  1. 完成根据手机品牌查询手机信息,要求使用模糊查询,效果如图所示

  1. 完成根据手机编号修改手机价格功能,效图所下图所示

  1. 退出

  1. 用户录入的选择不正确

  • 注意事项
    1. 请注意代码的书写、命名符合规范,在代码中添加必须要的注释
    2. 请注意操作数据库时进行必要的异常处理。
    3. 请注意提交数据库的.sql文件和Java项目

项目目录结构 

具体实现代码

1.test类

package com.cw.mobile.test;

import com.cw.mobile.view.MobView;

/**
 * 测试类
 */
public class TestMob {
    public static void main(String[] args) {
        new MobView().show();
    }
}

 2.数据库工具类及配置文件

package com.cw.util;

import java.io.IOException;
import java.sql.*;
import java.util.Properties;

/**
 * JDBC操作工具类, 提供注册驱动, 连接, 发送器, 动态绑定参数, 关闭资源等方法
 * jdbc连接参数的提取, 使用Properties进行优化(软编码)
 */
public class JDBCUtils {
    private static String driver;
    private static String url;
    private static String user;
    private static String password;

    static {
        // 借助静态代码块保证配置文件只读取一次就行
        // 创建Properties对象
        Properties prop = new Properties();
        try {
            // 加载配置文件, 调用load()方法
            // 类加载器加载资源时, 去固定的类路径下查找资源, 因此, 资源文件必须放到src目录才行
            prop.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
            // 从配置文件中获取数据为成员变量赋值
            driver = prop.getProperty("db.driver").trim();
            url = prop.getProperty("db.url").trim();
            user = prop.getProperty("db.user").trim();
            password = prop.getProperty("db.password").trim();
            // 加载驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * 统一关闭资源
     *
     * @param rs
     * @param stmt
     * @param conn
     */
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        try {
            if(rs != null){
                rs.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(stmt != null){
                stmt.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 动态绑定参数
     *
     * @param pstmt
     * @param params
     */
    public static void bindParam(PreparedStatement pstmt, Object... params) {
        try {
            for (int i = 0; i < params.length; i++) {
                pstmt.setObject(i + 1, params[i]);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 预处理发送器
     *
     * @param conn
     * @param sql
     * @return
     */
    public static PreparedStatement getPstmt(Connection conn, String sql) {
        PreparedStatement pstmt = null;
        try {
            pstmt = conn.prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return pstmt;
    }

    /**
     * 获取发送器的方法
     *
     * @param conn
     * @return
     */
    public static Statement getStmt(Connection conn) {
        Statement stmt = null;
        try {
            stmt = conn.createStatement();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return stmt;
    }
    /**
     * 获取数据库连接的方法
     *
     * @return
     */
    public static Connection getConn() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

db.properties 

db_driver=com.mysql.jdbc.Driver
db_user=root
db_password=12345
db_url=jdbc:mysql://localhost:3306/mob?useUnicode=true&characterEncoding=UTF8&useSSL=false

3.view层(视图层)

package com.cw.mobile.view;

import com.cw.mobile.pojo.Mob;
import com.cw.mobile.service.MobService;
import com.cw.mobile.service.impl.MobServiceImpl;

import java.util.List;
import java.util.Scanner;

/**
 * 视图层
 */
public class MobView {
    private Scanner sc = new Scanner(System.in);
    private MobService service = new MobServiceImpl();

    public void show() {
        System.out.println("******************************");
        System.out.println("   欢迎使用手机信息管理系统");
        System.out.println("******************************");
        while (true) {
            System.out.println("\n********功能菜单*********");
            System.out.println("1.手机录入");
            System.out.println("2.根据手机品牌查询手机信息");
            System.out.println("3.查询全部手机信息");
            System.out.println("4.根据手机编号修改手机价格");
            System.out.println("5.根据手机编号删除手机记录");
            System.out.println("6.退出");
            System.out.print("请输入对应数字进行操作:");
            int op = sc.nextInt();
            switch (op) {
                case 1:
                    addMob();
                    continue;
                case 2:
                    queryByBrand();
                    continue;
                case 3:
                    queryAll();
                    continue;
                case 4:
                    updPriceById();
                    continue;
                case 5:
                    delById();
                    continue;
                case 6:
                    System.out.println("bye bye!");
                    break;
                default:
                    System.out.println("输入有误,请重新输入!");
                    break;
            }
            break;
        }
    }

    /**
     * 根据手机编号删除手机记录
     */
    private void delById() {
        System.out.println("请输入要删除的手机的编号:");
        int id = sc.nextInt();
        System.out.println(service.deleteMob(id) ? "删除成功!" : "对不起,您所在删除的手机不存在!");
        queryAll();
    }

    /**
     * 根据手机编号修改手机价格
     */
    private void updPriceById() {
        System.out.println("请输入要修改的手机编号:");
        int id = sc.nextInt();
        System.out.println("请输入修改后的价格:");
        double price = sc.nextDouble();
        System.out.println(service.modifyPrice(id, price) ? "修改成功!" : "修改失败!");
        queryAll();
    }

    /**
     * 查询全部手机信息
     */
    private void queryAll() {
        List<Mob> list = service.queryAllMob();
        System.out.println("\n序号\t\t品牌\t\t型号\t\t价格\t\t数量\t\t版本");
        for (Mob mob : list) {
            System.out.println(mob.getId() + "\t\t" + mob.getBrand() + "\t\t"
                    + mob.getModel() + "\t\t" + mob.getPrice() + "\t\t" +
                    mob.getCount() + "\t\t" + mob.getVersion());
        }
        System.out.println();
    }

    /**
     * 根据手机品牌查询手机信息
     */
    private void queryByBrand() {
        System.out.println("请输入要查询的手机品牌:");
        String brand = sc.next();
        List<Mob> list = service.queryByBrand(brand);
        System.out.println("\n序号\t\t品牌\t\t型号\t\t价格\t\t数量\t\t版本");
        for (Mob mob : list) {
            System.out.println(mob.getId() + "\t\t" + mob.getBrand() + "\t\t"
                    + mob.getModel() + "\t\t" + mob.getPrice() + "\t\t" +
                    mob.getCount() + "\t\t" + mob.getVersion());
        }
    }

    /**
     * 录入手机信息
     */
    private void addMob() {
        Mob emp = new Mob();
        System.out.println("请输入手机品牌:");
        emp.setBrand(sc.next());
        System.out.println("请输入手机型号:");
        emp.setModel(sc.next());
        System.out.println("请输入手机价格:");
        emp.setPrice(sc.nextDouble());
        System.out.println("请输入手机数量:");
        emp.setCount(sc.nextInt());
        System.out.println("请输入手机版本:");
        emp.setVersion(sc.next());
        if (service.save(emp)) {
            System.out.println("添加成功!");
        } else {
            System.out.println("添加失败!");
        }
    }
}

4.service层

package com.cw.mobile.service;

import com.cw.mobile.pojo.Mob;

import java.util.List;

public interface MobService {
    /**
     * 新增手机记录
     * @param mob
     * @return
     */
    boolean save(Mob mob);

    /**
     * 根据手机编号修改手机价格
     * @param id
     * @param price
     * @return
     */
    boolean modifyPrice(int id, double price);

    /**
     * 根据手机编号删除手机记录
     * @param id
     * @return
     */
    boolean deleteMob(int id);

    /**
     * 查询所有手机记录
     * @return
     */
    List<Mob> queryAllMob();

    /**
     * 根据手机品牌模糊查询手机记录
     * @param brand
     * @return
     */
    List<Mob> queryByBrand(String brand);
}
package com.cw.mobile.service.impl;

import com.cw.mobile.dao.MobDao;
import com.cw.mobile.dao.impl.MobDaoImpl;
import com.cw.mobile.pojo.Mob;
import com.cw.mobile.service.MobService;

import java.util.List;

public class MobServiceImpl implements MobService {
    private MobDao mobDao = new MobDaoImpl();
    @Override
    public boolean save(Mob mob) {
        return mobDao.insertMob(mob) > 0 ? true : false;
    }

    @Override
    public boolean modifyPrice(int id, double price) {
        return mobDao.updatePriceById(id,price)>0;
    }

    @Override
    public boolean deleteMob(int id) {
        return mobDao.deleteById(id)>0;
    }

    @Override
    public List<Mob> queryAllMob() {
        return mobDao.selectAll();
    }

    @Override
    public List<Mob> queryByBrand(String brand) {
        return mobDao.selectByBrand(brand);
    }
}

5.Dao层

package com.cw.mobile.dao;

import com.cw.mobile.pojo.Mob;

import java.util.List;

public interface MobDao {
    /**
     * 新增手机记录
     * @param mob
     * @return
     */
    int insertMob(Mob mob);
    /**
     * 根据手机编号修改手机价格
     * @param id
     * @param price
     * @return
     */
    int updatePriceById(int id, double price);
    /**
     * 根据手机编号删除手机记录
     * @param id
     * @return
     */
    int deleteById(int id);

    /**
     * 查询所有手机记录
     * @return
     */
    List<Mob> selectAll();
    /**
     * 根据手机品牌模糊查询手机记录
     * @param brand
     * @return
     */
    List<Mob> selectByBrand(String brand);
}
package com.cw.mobile.dao.impl;

import com.cw.mobile.dao.BaseDao;
import com.cw.mobile.dao.MobDao;
import com.cw.mobile.pojo.Mob;

import java.util.List;

public class MobDaoImpl extends BaseDao implements MobDao {
    @Override
    public int insertMob(Mob mob) {
        String sql = "insert into mobile values (null,?,?,?,?,?)";
        return update(sql, mob.getBrand(), mob.getModel(), mob.getPrice(), mob.getCount(), mob.getVersion());
    }

    @Override
    public int updatePriceById(int id, double price) {
        String sql = "update mobile set price=? where id=?";
        return update(sql, price, id);
    }

    @Override
    public int deleteById(int id) {
        String sql = "delete from mobile where id=?";
        return update(sql, id);
    }

    @Override
    public List<Mob> selectAll() {
        String sql = "select * from mobile";
        return queryList(Mob.class, sql);
    }

    @Override
    public List<Mob> selectByBrand(String brand) {
        String sql = "select * from mobile where brand like ?";
        return queryList(Mob.class, sql, "%" + brand + "%");
    }
}
package com.cw.mobile.dao;

import com.cw.mobile.util.JDBCUtils;

import java.lang.reflect.Method;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 当前dao用于封装查询和更新的统一方法, 要求所有其他dao应该继承
 */
public class BaseDao {
    /**
     * 执行DML操作的统一方法
     *
     * @param sql
     * @param params
     * @return
     */
    public int update(String sql, Object... params) {
        Connection conn = JDBCUtils.getConn();
        PreparedStatement pstmt = JDBCUtils.getPstmt(conn, sql);
        JDBCUtils.bindParam(pstmt, params);
        try {
            return pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(null, pstmt, conn);
        }
        return 0;
    }

    /**
     * 查询多条数据的统一方法
     *
     * @param sql
     * @param params
     * @return
     */
    public <T> List<T> queryList(Class<T> cls, String sql, Object... params) {
        List<T> list = new ArrayList<>();
        Connection conn = JDBCUtils.getConn();
        PreparedStatement pstmt = JDBCUtils.getPstmt(conn, sql);
        JDBCUtils.bindParam(pstmt, params);
        ResultSet rs = null;

        try {
            rs = pstmt.executeQuery();
            ResultSetMetaData metaData = rs.getMetaData();
            while (rs.next()) {
                //相当于Mob mob=new Mob();
                T bean = cls.newInstance();
                for (int i = 1; i <= metaData.getColumnCount(); i++) {
                    String columnLabel = metaData.getColumnLabel(i);
                    Class<?> type = cls.getDeclaredField(columnLabel).getType();
                    Method method = cls.getMethod("set" + columnLabel.substring(0, 1).toUpperCase() + columnLabel.substring(1), type);
                    method.invoke(bean, rs.getObject(columnLabel));
                }
                list.add(bean);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(rs, pstmt, conn);
        }
        return list;
    }

    /**
     * 查询单个数据的统一方法
     *
     * @param sql
     * @param params
     * @return
     */
    public <T> T queryOne(Class<T> cls, String sql, Object... params) {
        List<T> list = queryList(cls, sql, params);
        return list.size() > 0 ? list.get(0) : null;
    }
}

6.实体类

package com.cw.mobile.pojo;

import java.io.Serializable;

public class Mob implements Serializable {
    private Integer id;
    private String brand;
    private String model;
    private Double price;
    private Integer count;
    private String version;

    public Mob() {
    }

    public Mob(Integer id, String brand, String model, Double price, Integer count, String version) {
        this.id = id;
        this.brand = brand;
        this.model = model;
        this.price = price;
        this.count = count;
        this.version = version;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    @Override
    public String toString() {
        return "Mob{" +
                "id=" + id +
                ", brand='" + brand + '\'' +
                ", model='" + model + '\'' +
                ", price=" + price +
                ", count=" + count +
                ", version='" + version + '\'' +
                '}';
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一个简单的程序,4个人20天的心血.package zhuyemian; import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.border.EtchedBorder; //import com.qhit.LandAppend; //import com.qhit.PasswordAmend; import Kehuxinxi.Kehumain; import Shouhoumain.Main; import Xiaoshouxinxi.Xiaoshoumain; import Chanpinxinxi.Chanpinmain; public class Zhuyemian extends JFrame implements Runnable{ MyPanel panel = new MyPanel(); JLabel label; public Zhuyemian() { super(); this.setIconImage(new ImageIcon("shoujitubiao.jpg").getImage());//在标题上的图片 this.setTitle("手机销售信息管理");//标题 this.setResizable(false);//大小可否改变 setSize(1024, 768); getContentPane().setLayout(null); getContentPane().add(panel); panel.setBounds(142, 37, 900, 738); panel.setLayout(null); final JMenuBar menuBar = new JMenuBar(); menuBar.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 setJMenuBar(menuBar); final JMenu menujibencaozuo = new JMenu(); menujibencaozuo.setText("基本操作"); menuBar.add(menujibencaozuo); final JMenuItem newItemMenuItem_1 = new JMenuItem(); newItemMenuItem_1.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new Kehumain(); } }); newItemMenuItem_1.setText("客户信息"); menujibencaozuo.add(newItemMenuItem_1); final JMenuItem newItemMenuItem = new JMenuItem(); newItemMenuItem.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new Chanpinmain(); } }); newItemMenuItem.setText("产品信息"); menujibencaozuo.add(newItemMenuItem); final JMenuItem newItemMenuItemxiaoshouxinxi = new JMenuItem(); newItemMenuItemxiaoshouxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new Xiaoshoumain(); } }); newItemMenuItemxiaoshouxinxi.setText("销售信息"); menujibencaozuo.add(newItemMenuItemxiaoshouxinxi); final JMenuItem newItemMenuItemshouhouxinxi = new JMenuItem(); newItemMenuItemshouhouxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new Main(); } }); newItemMenuItemshouhouxinxi.setText("售后信息"); menujibencaozuo.add(newItemMenuItemshouhouxinxi); final JMenu menugongju = new JMenu(); menugongju.setText("工具"); menuBar.add(menugongju); final JMenuItem newItemMenuItemjisuanqi = new JMenuItem(); newItemMenuItemjisuanqi.setText("计算器"); newItemMenuItemjisuanqi.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { Runtime.getRuntime().exec("calc.exe"); //设置运行任何系统可执行的程序----计算器 } catch (IOException e) { e.printStackTrace(); } } }); menugongju.add(newItemMenuItemjisuanqi); final JMenuItem newItemMenuItemjishiben = new JMenuItem(); newItemMenuItemjishiben.setText("记事本"); newItemMenuItemjishiben.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { Runtime.getRuntime().exec("notepad.exe"); //设置运行任何系统可执行的程序----记事本 } catch (IOException e) { e.printStackTrace(); } } }); menugongju.add(newItemMenuItemjishiben); final JMenu menu = new JMenu(); menu.setText("密码设置"); menuBar.add(menu); final JMenuItem newItemMenuItem_2 = new JMenuItem(); newItemMenuItem_2.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { // LandAppend ls = new LandAppend(); } }); newItemMenuItem_2.setText("注册管理员"); menu.add(newItemMenuItem_2); final JMenuItem newItemMenuItem_3 = new JMenuItem(); newItemMenuItem_3.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { // PasswordAmend frame = new PasswordAmend(null); } }); newItemMenuItem_3.setText("修改密码"); menu.add(newItemMenuItem_3); final JButton xiaishouxinxi = new JButton(); xiaishouxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { Xiaoshoumain xsm =new Xiaoshoumain(); } }); xiaishouxinxi.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/xiaoshouxinxi.jpg")); xiaishouxinxi.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 xiaishouxinxi.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); xiaishouxinxi.setText(""); xiaishouxinxi.setBounds(0, 369, 136, 139); getContentPane().add(xiaishouxinxi); final JButton shouhouxinxi = new JButton(); shouhouxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { Main mm=new Main(); } }); shouhouxinxi.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/shouhouxinxi.jpg")); shouhouxinxi.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 shouhouxinxi.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); shouhouxinxi.setText(""); shouhouxinxi.setBounds(0, 537, 136, 139); getContentPane().add(shouhouxinxi); final JButton chanpinxinxi = new JButton(); chanpinxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { Chanpinmain cpm=new Chanpinmain(); } }); chanpinxinxi.setBounds(0, 202, 136, 134); getContentPane().add(chanpinxinxi); chanpinxinxi.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); chanpinxinxi.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/chanpinxinxi.jpg")); chanpinxinxi.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 chanpinxinxi.setText(""); final JButton kehuxinxi = new JButton(); kehuxinxi.setBounds(0, 37, 136, 134); getContentPane().add(kehuxinxi); kehuxinxi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new Kehumain(); } }); kehuxinxi.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/kehuxinxi.jpg")); kehuxinxi.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 kehuxinxi.setText(""); this.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置鼠标形状为手型 label = new JLabel(); label.setText(""); label.setBounds(805, 0, 213, 36); getContentPane().add(label); final JToolBar toolBar = new JToolBar(); toolBar.setBounds(2, 1, 1016, 34); getContentPane().add(toolBar); final JButton Bangzhu= new JButton(); toolBar.add(Bangzhu); Bangzhu.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/帮助.png")); Bangzhu.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 Bangzhu.setText("帮助"); final JButton dayin = new JButton(); toolBar.add(dayin); dayin.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/print.png")); dayin.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 dayin.setText("打印"); final JButton tuichu = new JButton(); toolBar.add(tuichu); tuichu.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { int aa=JOptionPane.showConfirmDialog(null, "你确认要退出吗?","确定",2); if(aa==JOptionPane.YES_OPTION){ dispose(); } } }); tuichu.setIcon(SwingResourceManager.getIcon(Zhuyemian.class, "/退出.png")); tuichu.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));//设置鼠标形状为默认的箭头 tuichu.setText("退出"); /*******************************************设定窗体的位置(居中)*******************************************/ Toolkit kit=Toolkit.getDefaultToolkit(); Dimension screen=kit.getScreenSize(); int height=screen.height;//当前屏幕高度 int width=screen.width;//当前屏幕宽度 this.setLocation((width-this.getWidth())/2,(height-this.getHeight())/3); this.setVisible(true); //启动多线程 Thread th =new Thread(this); th.start(); } /*******************************************时钟run方法*******************************************/ public void run() { while(true){ Date d =new Date(); SimpleDateFormat sdf =new SimpleDateFormat("yyyy-M-dd hh:mm:ss"); String str =sdf.format(d); label.setText(str); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { //改变观感 //org.jvnet.substance.SubstanceLookAndFeel try { UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel"); } catch (Exception e) { e.printStackTrace(); } new Zhuyemian(); } } /******************************************添加背景图片*******************************************/ class MyPanel extends JPanel{ //1.从写这个方法 public void paintComponent(Graphics g) { ImageIcon icon = new ImageIcon("zhujiemian.jpg"); g.drawImage(icon.getImage(), 0, 0, this.getWidth(), this.getHeight(), this); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈小哥cw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值