Java实现电脑恶搞关机程序

 前言

明哥教学案例,使用javase部分技术实现,电脑恶搞关机程序,特此记录,方便学生查阅学习。

一、效果图如下

 

最终效果

二、实现Java代码

 CloseSystem类

package com.mg;

/**
 * 类名:CloseSystem
 * 包名:com.mg
 * 创建时间:2020/6/24 9:46
 * 创建人: 明哥
 * 描述:
 **/
public class CloseSystem {
    Runtime rTime = Runtime.getRuntime();
    int time = 50;//设置关机时间
    String input = "我是猪";

    public void close() {
        try {
            rTime.exec("shutdown -s -t " + time);
        } catch (Exception e) {
        }
    }

    public void cancel() {
        try {
            rTime.exec("shutdown -a");//取消关机
        } catch (Exception e) {
        }
    }
}
Countdown类
package com.mg;

import javax.swing.*;
import java.awt.*;

/**
 * 类名:Countdown
 * 包名:com.mg
 * 创建时间:2020/6/24 9:49
 * 创建人: 明哥
 * 描述:
 **/
public class Countdown extends Thread {
    CloseSystem cs = new CloseSystem();
    String afx;

    public void run() {
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            cs.time--;
            if (cs.time == 5) {//当只剩下5秒时
                JLabel sb = new JLabel("倒计时五秒你确定不输入吗?");
                sb.setFont(new java.awt.Font("隶书", 1, 24));
                sb.setBackground(Color.GREEN);
                JPanel pa = new JPanel();
                pa.add(sb);
                MyFrame.myJF.add(pa);
                MyFrame.myJF.setVisible(true);
                MyFrame.edit.setVisible(false);
                MyFrame.ca.setEnabled(false);
                MyFrame.ok.setEnabled(false);
            }
            afx = "倒计时:" + cs.time;
            MyFrame.label.setText(afx);
            MyFrame.jp03.add(MyFrame.label);
            if (cs.time == 0) {
                System.exit(0);
            }
        }
    }
}
MyFrame类
package com.mg;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 类名:MyFrame
 * 包名:com.mg
 * 创建时间:2020/6/24 9:53
 * 创建人: 明哥
 * 描述:
 **/
public class MyFrame {
    Countdown cd = new Countdown();
    JLabel caption = new JLabel("电脑将在" + cd.cs.time + "秒后关机,输入”" + cd.cs.input + "“则取消!");
    static JLabel label = new JLabel();
    static JFrame myJF = new JFrame("关机程序");
    static JButton ok = new JButton("确定");
    static JButton ca = new JButton("退出");
    static JTextField edit = new JTextField(8);
    JPanel jp01 = new JPanel();
    JPanel jp02 = new JPanel();
    static JPanel jp03 = new JPanel();
    JPanel jp04 = new JPanel();
    CloseSystem cs = new CloseSystem();

    public MyFrame() {
        myJF.setSize(500, 500);
        myJF.setLocation(400, 100);
        myJF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myJF.getRootPane().setDefaultButton(ok);//响应回车键
        caption.setFont(new java.awt.Font("行楷", 1, 16));
        caption.setForeground(Color.BLUE);
        label.setFont(new java.awt.Font("行楷", 1, 24));
        label.setForeground(Color.RED);
        edit.setFont(new java.awt.Font("行楷", 1, 18));
        jp01.add(caption);
        jp02.add(edit);
        jp03.add(label);
        jp04.add(ca);
        jp04.add(ok);
        myJF.add(jp01);
        myJF.add(jp02);
        myJF.add(jp03);
        myJF.add(jp04);
        myJF.setLayout(new GridLayout(5, 1));
        cs.close();
        myJF.setVisible(true);

        cd.start();

        ok.addActionListener(new ActionListener() {
            @SuppressWarnings("deprecation")
            public void actionPerformed(ActionEvent e) {
                if (edit.getText().equals(cs.input)) {
                    cs.cancel();
                    JOptionPane.showMessageDialog(null, "关机已取消!",
                            "", JOptionPane.INFORMATION_MESSAGE);
                    cd.stop(); //线程停止
                    edit.setEnabled(false);
                    ok.setEnabled(false);
                    ca.setEnabled(false);
                } else {
                    JOptionPane.showMessageDialog(null, "输入错误!",
                            "提示", JOptionPane.ERROR_MESSAGE);
                    edit.setText("");
                }
            }
        });
        ca.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "确定要退出吗?电脑依然会关机的!",
                        "提示", JOptionPane.ERROR_MESSAGE);
            }
        });
    }

    public static void main(String[] args) {
        new MyFrame();
    }
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

讲台催眠师明哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值