⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timerview.java

📁 带定时器的JAVA关机程序,时间可以随便输入
💻 JAVA
字号:
/* * TimerView.java */package timer;import org.jdesktop.application.Action;import org.jdesktop.application.ResourceMap;import org.jdesktop.application.SingleFrameApplication;import org.jdesktop.application.FrameView;import org.jdesktop.application.TaskMonitor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Timer;import javax.swing.Icon;import javax.swing.JDialog;import javax.swing.JFrame;/** * The application's main frame. */public class TimerView extends FrameView {    public TimerView(SingleFrameApplication app) {        super(app);        initComponents();        // status bar initialization - message timeout, idle icon and busy animation, etc        ResourceMap resourceMap = getResourceMap();        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");        messageTimer = new Timer(messageTimeout, new ActionListener() {            public void actionPerformed(ActionEvent e) {                statusMessageLabel.setText("");            }        });        messageTimer.setRepeats(false);        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");        for (int i = 0; i < busyIcons.length; i++) {            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");        }        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {            public void actionPerformed(ActionEvent e) {                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);            }        });        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");        statusAnimationLabel.setIcon(idleIcon);        progressBar.setVisible(false);        // connecting action tasks to status bar via TaskMonitor        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {            public void propertyChange(java.beans.PropertyChangeEvent evt) {                String propertyName = evt.getPropertyName();                if ("started".equals(propertyName)) {                    if (!busyIconTimer.isRunning()) {                        statusAnimationLabel.setIcon(busyIcons[0]);                        busyIconIndex = 0;                        busyIconTimer.start();                    }                    progressBar.setVisible(true);                    progressBar.setIndeterminate(true);                } else if ("done".equals(propertyName)) {                    busyIconTimer.stop();                    statusAnimationLabel.setIcon(idleIcon);                    progressBar.setVisible(false);                    progressBar.setValue(0);                } else if ("message".equals(propertyName)) {                    String text = (String)(evt.getNewValue());                    statusMessageLabel.setText((text == null) ? "" : text);                    messageTimer.restart();                } else if ("progress".equals(propertyName)) {                    int value = (Integer)(evt.getNewValue());                    progressBar.setVisible(true);                    progressBar.setIndeterminate(false);                    progressBar.setValue(value);                }            }        });    }    @Action    public void showAboutBox() {        if (aboutBox == null) {            JFrame mainFrame = TimerApp.getApplication().getMainFrame();            aboutBox = new TimerAboutBox(mainFrame);            aboutBox.setLocationRelativeTo(mainFrame);        }        TimerApp.getApplication().show(aboutBox);    }    /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    @SuppressWarnings("unchecked")    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents    private void initComponents() {        mainPanel = new javax.swing.JPanel();        jTextField1 = new javax.swing.JTextField();        jButton1 = new javax.swing.JButton();        jButton2 = new javax.swing.JButton();        jComboBox1 = new javax.swing.JComboBox();        jLabel1 = new javax.swing.JLabel();        jLabel2 = new javax.swing.JLabel();        menuBar = new javax.swing.JMenuBar();        javax.swing.JMenu fileMenu = new javax.swing.JMenu();        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();        javax.swing.JMenu helpMenu = new javax.swing.JMenu();        javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();        statusPanel = new javax.swing.JPanel();        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();        statusMessageLabel = new javax.swing.JLabel();        statusAnimationLabel = new javax.swing.JLabel();        progressBar = new javax.swing.JProgressBar();        mainPanel.setName("mainPanel"); // NOI18N        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(timer.TimerApp.class).getContext().getResourceMap(TimerView.class);        jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N        jTextField1.setName("jTextField1"); // NOI18N        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(timer.TimerApp.class).getContext().getActionMap(TimerView.class, this);        jButton1.setAction(actionMap.get("actionStart")); // NOI18N        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N        jButton1.setName("jButton1"); // NOI18N        jButton2.setAction(actionMap.get("actionStop")); // NOI18N        jButton2.setName("jButton2"); // NOI18N        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "秒", "分", "时" }));        jComboBox1.setName("jComboBox1"); // NOI18N        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N        jLabel1.setName("jLabel1"); // NOI18N        jLabel2.setIcon(resourceMap.getIcon("jLabel2.icon")); // NOI18N        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N        jLabel2.setName("jLabel2"); // NOI18N        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);        mainPanel.setLayout(mainPanelLayout);        mainPanelLayout.setHorizontalGroup(            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(mainPanelLayout.createSequentialGroup()                .addGap(50, 50, 50)                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)                    .addGroup(mainPanelLayout.createSequentialGroup()                        .addComponent(jLabel1)                        .addGap(27, 27, 27)                        .addComponent(jComboBox1, 0, 92, Short.MAX_VALUE)                        .addGap(133, 133, 133))                    .addGroup(mainPanelLayout.createSequentialGroup()                        .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)                            .addComponent(jButton2)                            .addGroup(mainPanelLayout.createSequentialGroup()                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)                                .addComponent(jButton1)))                        .addGap(140, 140, 140))))            .addGroup(mainPanelLayout.createSequentialGroup()                .addGap(115, 115, 115)                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)                .addContainerGap(150, Short.MAX_VALUE))        );        mainPanelLayout.setVerticalGroup(            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(mainPanelLayout.createSequentialGroup()                .addContainerGap()                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)                .addGap(18, 18, 18)                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                    .addComponent(jLabel1))                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                    .addComponent(jButton1))                .addGap(18, 18, 18)                .addComponent(jButton2)                .addContainerGap(57, Short.MAX_VALUE))        );        menuBar.setName("menuBar"); // NOI18N        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N        fileMenu.setName("fileMenu"); // NOI18N        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N        exitMenuItem.setName("exitMenuItem"); // NOI18N        fileMenu.add(exitMenuItem);        menuBar.add(fileMenu);        helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N        helpMenu.setName("helpMenu"); // NOI18N        aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N        aboutMenuItem.setName("aboutMenuItem"); // NOI18N        helpMenu.add(aboutMenuItem);        menuBar.add(helpMenu);        statusPanel.setName("statusPanel"); // NOI18N        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N        statusMessageLabel.setForeground(resourceMap.getColor("statusMessageLabel.foreground")); // NOI18N        statusMessageLabel.setName("statusMessageLabel"); // NOI18N        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N        progressBar.setName("progressBar"); // NOI18N        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);        statusPanel.setLayout(statusPanelLayout);        statusPanelLayout.setHorizontalGroup(            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)            .addGroup(statusPanelLayout.createSequentialGroup()                .addContainerGap()                .addComponent(statusMessageLabel)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE)                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)                .addComponent(statusAnimationLabel)                .addContainerGap())        );        statusPanelLayout.setVerticalGroup(            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)            .addGroup(statusPanelLayout.createSequentialGroup()                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)                    .addComponent(statusMessageLabel)                    .addComponent(statusAnimationLabel)                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))                .addGap(3, 3, 3))        );        setComponent(mainPanel);        setMenuBar(menuBar);        setStatusBar(statusPanel);    }// </editor-fold>//GEN-END:initComponents    @Action    public void actionStart() {        Runtime rt=Runtime.getRuntime();         String Text = jTextField1.getText();        String FinalTime="";        if(Text.equals(""))        {             statusMessageLabel.setText("请输入时间!");             messageTimer.start();             return;        }        if(jComboBox1.getSelectedIndex()==0)//输入的时间单位为秒        {            FinalTime = Text;        }        else if(jComboBox1.getSelectedIndex()==1)//输入的时间单位为分        {           FinalTime=String.valueOf(Integer.parseInt(Text)*60);        }        else if(jComboBox1.getSelectedIndex()==2)//输入的时间单为小时        {            FinalTime=String.valueOf(Integer.parseInt(Text)*3600);        }        try 		{ 			rt.exec("shutdown.exe -s -t " + FinalTime); 			/*40的单位为秒,可以改成你想要的任何数字。 			如果是想定时关机,可用这句:rt.exec("at 19:00 shutdown.exe -s");19:00可以换成你想要的时间*/ 		} 		catch(Exception e) 		{ 			e.printStackTrace(); 		}         }    @Action    public void actionStop() {         Runtime rt=Runtime.getRuntime();         try 		{ 			rt.exec("shutdown.exe -a"); 			/*40的单位为秒,可以改成你想要的任何数字。 			如果是想定时关机,可用这句:rt.exec("at 19:00 shutdown.exe -s");19:00可以换成你想要的时间*/ 		} 		catch(Exception e) 		{ 			e.printStackTrace(); 		}     }    // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JButton jButton1;    private javax.swing.JButton jButton2;    private javax.swing.JComboBox jComboBox1;    private javax.swing.JLabel jLabel1;    private javax.swing.JLabel jLabel2;    private javax.swing.JTextField jTextField1;    private javax.swing.JPanel mainPanel;    private javax.swing.JMenuBar menuBar;    private javax.swing.JProgressBar progressBar;    private javax.swing.JLabel statusAnimationLabel;    private javax.swing.JLabel statusMessageLabel;    private javax.swing.JPanel statusPanel;    // End of variables declaration//GEN-END:variables    private final Timer messageTimer;    private final Timer busyIconTimer;    private final Icon idleIcon;    private final Icon[] busyIcons = new Icon[15];    private int busyIconIndex = 0;    private JDialog aboutBox;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -