📄 framemain.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 + -