重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一个关于定时提醒的弹窗例子,还不是很成熟,仅供参考
创新互联是一家专业提供马山企业网站建设,专注与网站制作、做网站、H5响应式网站、小程序制作等业务。10年已为马山众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
//主窗口界面设计
public class TestButtons {
JFrame frame = new JFrame("提醒");
JButton jButton = new JButton("开始运行"); //按钮
JCheckBox checkBox = new JCheckBox("早上提醒"); //复选按钮
JCheckBox checkBox1 = new JCheckBox("晚上提醒"); //复选按钮
JLabel label = new JLabel("Ready to run."); //静态文本
//构造函数
public TestButtons() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new java.awt.FlowLayout());
//为按钮添加动作监听器
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
//按钮事件处理程序
label.setText("Thread keep running.");
int i=Timetorun()*1000;
try {
Thread.sleep(i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame parent = new JFrame();
JOptionPane.showMessageDialog(parent, "该干啥了。");
}
});
//早上提醒 复选框处理程序
checkBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
JCheckBox cb = (JCheckBox) e.getSource();
label.setText("Selected Check Box is " + cb.isSelected());
}
});
//晚上提醒 复选框处理程序
checkBox1.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
JCheckBox cb = (JCheckBox) e.getSource();
label.setText("Selected Check Box is " + cb.isSelected());
}
});
//添加组件到容器
frame.getContentPane().add(jButton);
frame.getContentPane().add(checkBox);
frame.getContentPane().add(checkBox1);
frame.getContentPane().add(label);
frame.setSize(200, 250);
}
public void show() {
frame.show();
}
//主处理函数
public static void main(String[] args) {
TestButtons tb = new TestButtons();
tb.show();
}
//时间处理函数
public static int Timetorun(){
//获取系统当前时间
Calendar cal=Calendar.getInstance();
int nowhour=cal.get(Calendar.HOUR_OF_DAY);
int nowminite=cal.get(Calendar.MINUTE);
int nowweek=cal.get(Calendar.DAY_OF_WEEK);
System.out.println(nowhour+"");
System.out.println(nowminite+"");
System.out.println(nowweek+"");
int dehour=0;
int deminite=0;
//获取延迟时间
if(nowweek==2 || nowweek==3 || nowweek==5){
if(nowminite=30 nowhour=20){
deminite=30-nowminite;
dehour=20-nowhour;
}
else if(nowminite30 nowhour=20){
deminite=90-nowminite;
dehour=19-nowhour;
}
else if (nowminite=30 nowhour20) {
deminite=30-nowminite;
dehour=44-nowhour;
}
else {
deminite=90-nowminite;
dehour=43-nowhour;
}}
else if(nowweek==4 || nowweek==6 || nowweek==7 || nowweek==1){
if(nowminite=30 nowhour=17){
deminite=30-nowminite;
dehour=17-nowhour;
}
else if(nowminite30 nowhour=17){
deminite=90-nowminite;
dehour=16-nowhour;
}
else if (nowminite=30 nowhour17) {
deminite=30-nowminite;
dehour=41-nowhour;
}
else {
deminite=90-nowminite;
dehour=40-nowhour;
}
}
//延迟时间为K分钟
int k= dehour*60 + deminite;
return k;
}
}
tcp或者udp设置为全局的,不要定义在某一个窗体里面,当udp读取线程接受到数据后,就直接new这个窗体,把消息带过去,比如new ChatFrame(String msg).show();就行了。
代码缺一行:
。。。
authorTextArea.setPreferredSize(new Dimension(40, 80));
authorFrame.add(authorTextArea);
。。。
以上完了后,需要加一个
authorFrame.setVisible(true);
至于这个框的大小,你再调调哈,相互学习~,三年没做过了~
首先,给你看一个简单的代码例子先:
import java.util.*;
public class Test {
public static void main(String[] args) {
Date myDate = new Date();
Timer timer = new Timer();
timer.schedule(new MyTask(), myDate);
}
static class MyTask extends java.util.TimerTask {
public void run() {
System.out.println("________");
}
}
}
这段代码的作用是:在当前时间打印出“________”。
这里用到了Timer的schedule方法,该方法的使用有如下两种情况:
schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行;
schedule(TimerTask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定延迟peroid的执行。
scheduleAtFixedRate(TimerTask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
这里要注意一点:如果是用后面两个方法的话,则要通过timer的cancel()方法结束其运行,否则会一直循环执行下去。
那么,回到你的题目,只要将Date time参数改一下、将上面的run()方法的方法体改一下就行了。
记得给我分哦~~^_^