springboot mybatis-plus swing实现报警监听

这篇具有很好参考价值的文章主要介绍了springboot mybatis-plus swing实现报警监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过声音控制报警器,实现声光报警,使用beautyeye_lnf.jar美化界面如下
springboot mybatis-plus swing实现报警监听,spring boot,mybatis,java
springboot mybatis-plus swing实现报警监听,spring boot,mybatis,java

@EnableTransactionManagement(proxyTargetClass = true)
@SpringBootApplication
@EnableScheduling
public class AlarmWarnApplication {

    public static void main(String[] args) {
        try {
            org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
            BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.translucencyAppleLike;
            UIManager.put("RootPane.setupButtonVisible", false);
        } catch(Exception e) {
            //TODO exception
        }
        new SpringApplicationBuilder(AlarmWarnApplication.class).headless(false).run(args);
        //显示界面
        ViewStart.run();
    }

}
public class ViewStart {
    public static void run() {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SpringContextUtils.getBean(SwingArea.class).setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
@Component("SwingArea")
@Scope("prototype") //创建多例
@SuppressWarnings("all")
public class SwingArea extends JFrame {
    private ImageIcon imageIcon;
    private URL url;
    private JLabel imageLabel;
    private JLabel label;
    private JButton openBtn;
    private Timer timer;
    private AudioPlay audioPlay;

    @Autowired
    private DevicealarmMapper devicealarmMapper;

    public SwingArea() {
    	//报警要加载的音乐
        InputStream inputStream = getClass().getResourceAsStream("/music/music.wav");
        System.out.println(inputStream);
        audioPlay = new AudioPlay(inputStream);
        setTitle("报警监听程序");
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                // 处理关闭事件,例如显示确认对话框
                int option = JOptionPane.showConfirmDialog(SwingArea.this, "确定要关闭报警监听吗?", "提示", JOptionPane.YES_NO_OPTION);
                if (option == JOptionPane.YES_OPTION) {
                    // 用户确认关闭,执行关闭操作
                    dispose();
                }
            }
        });
        setResizable(false);
        setLayout(null);
        //尺寸
        setSize(800, 500);
		//背景图片
        ((JPanel)this.getContentPane()).setOpaque(false);
        url = this.getClass().getResource("/music/green.png");
        imageIcon = new ImageIcon(url); //添加图片
        imageLabel = new  JLabel(imageIcon);
        imageLabel.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());
        getLayeredPane().add(imageLabel, new Integer(Integer.MIN_VALUE));


        label = new JLabel("无报警");
        label.setFont(new Font(null, Font.BOLD, 30));
        label.setForeground(new Color(91, 182, 91));
        label.setBounds(120, -60, 500, 200);
        label.setHorizontalAlignment(JLabel.CENTER);
        add(label);

        openBtn = new JButton("消音");
        openBtn.setBounds(295,320,144,60);
        openBtn.setBackground(new Color(255,255,255));
        openBtn.setFont(new Font("宋体", Font.BOLD,28));
        openBtn.setForeground(Color.red);//字体颜色
        openBtn.setRolloverEnabled(true);
        //更改鼠标移入按钮背景色一直不起作用
//        openBtn.addMouseListener(new MouseAdapter() {
//            @Override
//            public void mouseEntered(MouseEvent e) {
//                // 鼠标进入时设置悬浮颜色
//                openBtn.setBackground(new Color(255,219,213 ));
//            }
//            @Override
//            public void mouseExited(MouseEvent e) {
//                // 鼠标离开时设置背景颜色
//                openBtn.setBackground(new Color(255,255,255));
//            }
//        });
        openBtn.setVisible(false);
        add(openBtn);

        setVisible(true);
        QueryWrapper<Devicealarm> queryWrapper = new QueryWrapper<>();
        //未消音
        queryWrapper.eq("mute", 0);
        //未处理
        queryWrapper.eq("isprocessing", 0);

        // 定时器,对报警监听
        timer = new Timer(2000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                java.util.List<Devicealarm> devicealarms = devicealarmMapper.selectList(queryWrapper);
                if(devicealarms.size() > 0){
                    //动态更改背景图重点,要先进行remove
                    getLayeredPane().remove(imageLabel);
                    label.setBounds(120, -30, 500, 200);
                    label.setFont(new Font(null, Font.BOLD, 28));
                    url = this.getClass().getResource("/music/alarm.gif");
                    imageIcon = new ImageIcon(url); //添加图片
                    imageLabel = new  JLabel(imageIcon);
                    imageLabel.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());
                    getLayeredPane().add(imageLabel, new Integer(Integer.MIN_VALUE));

                    openBtn.setVisible(true);
                    setVisible(true);
                    setExtendedState(JFrame.NORMAL);
                    toFront();
                    java.util.List<String> messageArr = new ArrayList<>();
                    java.util.List<String> idArr = new ArrayList<>();
                    for(int i = 0; i < devicealarms.size(); i++){
                        messageArr.add(devicealarms.get(i).getName() + "报警,浓度" + devicealarms.get(i).getValue() + "%LEL");
                        idArr.add(devicealarms.get(i).getId());
                    }
                    String message = "<html>" + String.join("<br/>", messageArr) + "</html>";
                    label.setText(message);
                    label.setForeground(Color.RED);
                    audioPlay.start();
                    openBtn.addActionListener(it -> {
                    	//动态更改背景图重点,要先进行remove
                        getLayeredPane().remove(imageLabel);
                        url = this.getClass().getResource("/music/green.png");
                        imageIcon = new ImageIcon(url); //添加图片
                        imageLabel = new  JLabel(imageIcon);
                        imageLabel.setBounds(0, 0, imageIcon.getIconWidth(), imageIcon.getIconHeight());
                        getLayeredPane().add(imageLabel, new Integer(Integer.MIN_VALUE));
                        getLayeredPane().repaint();
                        openBtn.setVisible(false);

                        Devicealarm devicealarm = new Devicealarm();
                        devicealarm.setMute(1);
                        devicealarmMapper.update(devicealarm, new QueryWrapper<Devicealarm>().in("id", idArr));
                        audioPlay.pause();
                        label.setForeground(new Color(91, 182, 91));
                        label.setBounds(120, -60, 500, 200);
                        label.setText("<html>无报警</html>");
                    });
                }
            }
        });
        // 启动定时器
        timer.start();
    }
}

其他工具类文章来源地址https://www.toymoban.com/news/detail-804885.html

@Component
public class SpringContextUtils implements ApplicationContextAware {
    /**
     * 上下文对象实例
     */
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过name获取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /**
     * 通过class获取Bean.
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name 标识名
     * @param clazz 类型对象
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}
@Component
public class SpringContextUtils implements ApplicationContextAware {
    /**
     * 上下文对象实例
     */
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过name获取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /**
     * 通过class获取Bean.
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name 标识名
     * @param clazz 类型对象
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}

到了这里,关于springboot mybatis-plus swing实现报警监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 结合 mybatis-plus 实现分页功能

            要实现分页功能方法有很多,但最基本的实现原理都差不多,所以在实现功能之前要先把原理搞明白。正如删除有 “逻辑删除”  和 “物理删除\\\" 之分,分页也有 “逻辑分页” 和 “物理分页”; 1、逻辑分页:逻辑分页依赖于代码。(Mybatis自带的分页插件就是逻

    2024年02月06日
    浏览(45)
  • SpringBoot整合Mybatis-Plus+Druid实现多数据源

    🌺本文主要讲解 springboot +mybatisplus + druid 实现多数据源配置功能 🌺 主页传送门:📀 传送 Spring Boot:    Spring Boot是一个基于Spring框架的开源Java开发框架,旨在简化Spring应用程序的开发、配置和部署。它提供了一种快速、敏捷的方式来构建独立的、生产级别的Spring应用程

    2024年02月09日
    浏览(104)
  • SpringBoot整合Mybatis-Plus、Jwt实现登录token设置

    Spring Boot整合Mybatis-plus实现登录常常需要使用JWT来生成用户的token并设置用户权限的拦截器。本文将为您介绍JWT的核心讲解、示例代码和使用规范,以及如何实现token的生成和拦截器的使用。 一、JWT的核心讲解 JWT(JSON Web Token)是一种基于JSON的,用于在网络上安全传输信息的

    2024年02月02日
    浏览(70)
  • SpringBoot整合mybatis-plus实现分页查询(建议收藏)

    一、前言         最近学习了SpringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现。现在我将具体的实现流程分享一下。 二、手动实现分页查询         先复习一下,SQL中的limit,下面一行sql语句的意思是从第二个数据开始查,查询出两条数据

    2024年01月16日
    浏览(70)
  • SpringBoot+Mybatis-Plus实现增删改查超详细步骤

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月13日
    浏览(40)
  • SpringBoot+Sharding-jdbc+mybatis-plus实现水平分表

    这块我就不演示了

    2024年02月12日
    浏览(36)
  • SpringBoot+Mybatis-Plus实现增删改查(配视频讲解)--项目阶段1

    目录 一、介绍 视频讲解 二、前期准备工作 (一) 创建springboot项目和创建数据库 三、项目配置 (一)pom.xl导入相关依赖  1.导入依赖 (二)yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示!!! (三)MySQL表绑定到spring boot(实体层)

    2024年02月11日
    浏览(30)
  • springboot+mybatis-plus+vue+element+vant2实现短视频网站,模拟西瓜视频移动端

    目录 一、前言 二、管理后台 1.登录 2.登录成功,进入欢迎页 ​编辑  3.视频分类管理 4. 视频标签管理 5.视频管理  6.评论管理 ​编辑 7.用户管理 8.字典管理 (类似于后端的枚举)  9.参数管理(富文本录入)  10.管理员管理  三、移动端  1.首页  2.视频详情 3.视频评论

    2024年02月15日
    浏览(43)
  • Mybatis-Plus+SpringBoot框架详解

    1、SpringBoot 简介 SpringBoot 提供了一种快速使用 Spring 的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 2014 年 4 月,Spring Boot 1

    2023年04月08日
    浏览(48)
  • SpringBoot整合Mybatis-Plus(SpringBoot3)

    依赖pom.xml: pom.xml resource包下的Application.yml: Aollication.yml pojo包下的实体类User: User mapper包下的接口UserMapper: UserMapper 主启动类DemoPlusApplication DemoPlusApplication 测试类DemoApplicationTest: DemoApplicationTest 实现结果 检测数据库连接: C(Create): D(Delete): U(Update) R(Read)

    2024年03月20日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包