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

📄 framemain.java

📁 简单的计时软件
💻 JAVA
字号:
package start;

import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXWriter;
import org.dom4j.tree.DefaultElement;
import org.xml.sax.SAXException;

public class FrameMain extends JFrame {

	private JSpinner spinnerSec;

	private JComboBox cbbList;

	private JTextField tFdTitle;

	private JSpinner spinnerMin;

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JLabel labelSecond;

	private JLabel labelMinute;

	private JButton btOK;

	private JButton btCancel;

	private TimerThread timerThread;

	private static FrameMain instance;

	public static void main(String[] args) {
		instance = new FrameMain();
	}

	private FrameMain() {

		getContentPane().setLayout(null);
		// setIconImage(SwingResourceManager.getImage(FrameMain.class,
		// "/image/title.gif"));
		setIconImage(new ImageIcon("image/title.gif").getImage());

		setBounds(new Rectangle(200, 200, 380, 280));
		setResizable(false);
		setTitle("定时器");
		spinnerMin = new JSpinner();
		spinnerMin.setBounds(117, 76, 45, 22);
		getContentPane().add(spinnerMin);
		spinnerMin.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e) {
				int value = Integer.parseInt(spinnerMin.getValue().toString());
				if (0 > value)
					spinnerMin.setValue(0);
				else if (120 < value)
					spinnerMin.setValue(120);
			}
		});

		spinnerSec = new JSpinner();
		spinnerSec.setBounds(237, 76, 45, 22);
		spinnerSec.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e) {
				int value = Integer.parseInt(spinnerSec.getValue().toString());
				if (0 > value)
					spinnerSec.setValue(0);
				else if (60 < value)
					spinnerSec.setValue(60);
			}
		});

		getContentPane().add(spinnerSec);

		final JLabel label = new JLabel();
		label.setFont(new Font("", Font.PLAIN, 16));
		label.setText("定时");
		label.setBounds(50, 76, 66, 18);
		getContentPane().add(label);

		final JLabel label_1 = new JLabel();
		label_1.setFont(new Font("", Font.PLAIN, 16));
		label_1.setText("分钟");
		label_1.setBounds(180, 76, 45, 18);
		getContentPane().add(label_1);

		final JLabel label_1_1 = new JLabel();
		label_1_1.setFont(new Font("Dialog", Font.PLAIN, 16));
		label_1_1.setText("秒钟");
		label_1_1.setBounds(297, 78, 45, 18);
		getContentPane().add(label_1_1);

		btOK = new JButton();
		btOK.setText("确定");
		btOK.addMouseListener(new MouseAdapter() {

			public void mouseClicked(MouseEvent e) {
				if (btOK.isEnabled()) {
					boolean hasIn = false;
					int second = Integer.parseInt(spinnerMin.getValue()
							.toString())
							* 60
							+ Integer
									.parseInt(spinnerSec.getValue().toString());
					timerThread = new TimerThread(second, tFdTitle.getText());
					timerThread.start();
					tFdTitle.setEditable(false);
					spinnerMin.setEnabled(false);
					spinnerSec.setEnabled(false);
					btCancel.setEnabled(true);
					btOK.setEnabled(false);

					//writeFile(tFdTitle.getText().trim());

				}
			}
		});
		btOK.setBounds(29, 168, 87, 28);
		getContentPane().add(btOK);

		btCancel = new JButton();
		btCancel.setText("取消");
		btCancel.addMouseListener(new MouseAdapter() {
			@SuppressWarnings("deprecation")
			public void mouseClicked(MouseEvent e) {
				if (btCancel.isEnabled()) {
					timerThread.stop();
					labelMinute.setText("000");
					labelSecond.setText("00");
					tFdTitle.setEditable(true);
					spinnerMin.setEnabled(true);
					spinnerSec.setEnabled(true);
					btCancel.setEnabled(false);
					btOK.setEnabled(true);
				}
			}
		});
		btCancel.setEnabled(false);
		btCancel.setBounds(141, 168, 84, 28);
		getContentPane().add(btCancel);

		final JLabel label_2 = new JLabel();
		label_2.setText("剩余");
		label_2.setFont(new Font("", Font.PLAIN, 16));
		label_2.setBounds(50, 127, 66, 18);
		getContentPane().add(label_2);

		labelMinute = new JLabel();
		labelMinute.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		labelMinute.setFont(new Font("", Font.BOLD | Font.ITALIC, 42));
		labelMinute.setText("000");
		labelMinute.setBounds(101, 109, 84, 38);
		getContentPane().add(labelMinute);

		final JLabel label_4 = new JLabel();
		label_4.setFont(new Font("", Font.PLAIN, 16));
		label_4.setText("分");
		label_4.setBounds(191, 127, 66, 18);
		getContentPane().add(label_4);

		labelSecond = new JLabel();
		labelSecond.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		labelSecond.setFont(new Font("", Font.BOLD | Font.ITALIC, 42));
		labelSecond.setText("00");
		labelSecond.setBounds(219, 109, 63, 38);
		getContentPane().add(labelSecond);

		final JLabel label_6 = new JLabel();
		label_6.setFont(new Font("", Font.PLAIN, 16));
		label_6.setText("秒");
		label_6.setBounds(288, 127, 66, 18);
		getContentPane().add(label_6);

		tFdTitle = new JTextField();
		tFdTitle.setBounds(29, 26, 208, 22);
		getContentPane().add(tFdTitle);

		final JButton btExit = new JButton();
		btExit.setText("退出");
		btExit.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				System.exit(0);
			}
		});
		btExit.setBounds(253, 168, 89, 28);
		getContentPane().add(btExit);

		setVisible(true);
		setAlwaysOnTop(true);

		cbbList = new JComboBox();
		cbbList.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				tFdTitle.setText(cbbList.getSelectedItem().toString());
			}
		});
		cbbList.setBounds(251, 26, 91, 22);
		getContentPane().add(cbbList);
		readFile();

		new SysTray();
	}

	void readFile() {
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			doc = reader.read(new File("list.xml"));
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Element root = doc.getRootElement();
		List list = root.elements();
		Iterator iterator = list.iterator();
		while (iterator.hasNext()) {
			String str = (String) ((Element) iterator.next()).getText();
			cbbList.addItem(str);
		}
	}

	/*void writeFile(String str) {
		boolean hasIn=false;
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			doc = reader.read(new File("list.xml"));
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Element root = doc.getRootElement();
		List list = root.elements();
		Iterator iterator = list.iterator();
		while (iterator.hasNext()) {
			String temp = (String) ((Element) iterator.next()).getText();
			if (temp.equals(str))
				hasIn=true;
		}
		if (!hasIn && null!=str && ""!=str)
		{
			root.add(new DefaultElement(str));
			doc.setRootElement(root);
			SAXWriter writer = new SAXWriter();
			writer.
			try {
				writer.write(doc);
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}*/

	class TimerThread extends Thread {
		private int timeleft;

		private String title;

		TimerThread(int timeleft, String title) {
			this.timeleft = timeleft;
			this.title = title;
		}

		public void run() {
			int minute = 0;
			int second = 0;
			minute = timeleft / 60;
			second = timeleft % 60;
			labelMinute.setText(String.format("%1$03d", minute));
			labelSecond.setText(String.format("%1$02d", second));
			while (timeleft > 0) {
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {

				}
				timeleft--;
				minute = timeleft / 60;
				second = timeleft % 60;
				labelMinute.setText(String.format("%1$03d", minute));
				labelSecond.setText(String.format("%1$02d", second));
			}
			tFdTitle.setEditable(true);
			spinnerMin.setEnabled(true);
			spinnerSec.setEnabled(true);
			btOK.setEnabled(true);
			btCancel.setEnabled(false);
			new FrameMessage(this.title);
		}
	}

	public static FrameMain getInstance() {
		return instance;
	}
}

⌨️ 快捷键说明

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