定时断网软件.docx
- 文档编号:27151148
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:33
- 大小:51.53KB
定时断网软件.docx
《定时断网软件.docx》由会员分享,可在线阅读,更多相关《定时断网软件.docx(33页珍藏版)》请在冰豆网上搜索。
定时断网软件
定时断网软件
首先我说说我做这个软件的出发点:
我们学校不是网费很贵吗?
有时候我们就不舍得去买号用了,现在我实现这个软件是为了定时断网,你可以在你同学上课的时候借他的账号用,并且用这个软件设定定时断网,等到他下课铃声一响,你就会断网了...等他想用的时候,也不至于被你占用号。
就是这个出发点,于是又自娱自乐的做了个东西,希望能帮到日常生活遇到的问题。
如果觉得对你有用的话,我可以传给你噢...最可惜JAVA开发的小软件没有经过特殊处理的话,必须下载它的运行环境JRE1.7,否则用不了。
软件视图浏览:
package定时断网软件3;
importjava.io.IOException;
/**
*定时断网软件v2.0
*@authorHYY
*@version2.02012年5月9日16:
27:
43实验室
*/
publicclassLauncher
{
publicstaticvoidmain(String[]args)throwsIOException
{
TimeFrametf=newTimeFrame();
tf.launcher();
}
}
package定时断网软件3;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.IOException;
importjava.text.SimpleDateFormat;
importjava.util.*;
importjava.util.concurrent.*;
importjavax.swing.*;
/**
*
*软件整体的框架类
*
*后记:
其实有很多地方可以利用按钮数组,或者文字域数组,因为那样可以方便添加或者进行集体操作。
*
*2012年5月9日16:
01:
13
*@authorHYY
*
*/
publicclassTimeFrame
{
//框架
privateJFramef=newJFrame("定时断网软件byHYYversion2.0E-mail:
290248126@");
privateJOptionPaneop=newJOptionPane("是否退出");
//断网线程
privateFutureTask
privateThreadcloseNet;
//获得剩余断网时间的线程
privateThreadleftTimeThread;
//标记属性,标记是否已经开始计时
privatebooleanisStart=false;
//标签部分
privateJLabelnowTimeLabel=newJLabel("现在时间是:
");
privateJLabelselectLabel=newJLabel("选择断网计时方式:
");
privateJLabelremainLabel=newJLabel("倒计时:
");
privateJLabelaccodingLabel=newJLabel("选择断网时间:
");
privateJLabelchooseTimeLabel=newJLabel("你选择的断网时间是:
");
privateJLabelLeftTimeLabel=newJLabel("离断网时间还有:
");
privateJLabelday1Label=newJLabel("日");
privateJLabelday2Label=newJLabel("日");
privateJLabelhour1Label=newJLabel("时");
privateJLabelhour2Label=newJLabel("时");
privateJLabelhour3Label=newJLabel("时");
privateJLabelminute1Label=newJLabel("分");
privateJLabelminute2Label=newJLabel("分");
privateJLabelminute3Label=newJLabel("分");
privateJLabelsecond1Label=newJLabel("秒");
privateJLabelsecond2Label=newJLabel("秒");
privateJLabelsecond3Label=newJLabel("秒");
//水平容器:
Boxb1=Box.createHorizontalBox();
Boxb2=Box.createHorizontalBox();
Boxb3=Box.createHorizontalBox();
Boxb4=Box.createHorizontalBox();
Boxb5=Box.createHorizontalBox();
Boxb6=Box.createHorizontalBox();
JPanelb7=newJPanel(newFlowLayout());
//竖直容器(总容器)
Boxb8=Box.createVerticalBox();
//总容器
JPanelp=newJPanel();
//按钮
JButtonexitSoft=newJButton("退出软件");
JButtonok=newJButton("开始倒计时");
//圆点按钮
privateCheckboxGroupcbg=newCheckboxGroup();
privateCheckboxcb1=newCheckbox("倒计时",cbg,true);
privateCheckboxcb2=newCheckbox("按具体时间",cbg,false);
privatebooleanflag=true;//标记是哪一种倒计时方法
//输入框(都是填写框,填写什么日,什么时,什么分,什么秒)
JTextFieldday1=newJTextField();
JTextFieldday2=newJTextField();
JTextFieldhour1=newJTextField();
JTextFieldhour2=newJTextField();
JTextFieldminute1=newJTextField();
JTextFieldminute2=newJTextField();
JTextFieldsecond1=newJTextField();
JTextFieldsecond2=newJTextField();
//输出框
JTextFieldnowTimeTextField=newJTextField();
JTextFieldremainTimeTextField=newJTextField();
JTextFieldselectTimeTextField=newJTextField();//选择时间输出框
JTextFieldhourTextField=newJTextField();//剩余多少时
JTextFieldminuteTextField=newJTextField();//剩余多少分
JTextFieldsecondTextField=newJTextField();//剩余多少秒
//监听器类
classOKListenerimplementsActionListener
{
@Override
publicvoidactionPerformed(ActionEvente)
{
startCloseNetThread();
}
}
/**
*监听是否已经完成断网的线程
*@authorHYY
*
*/
classCheckIsDoneimplementsRunnable
{
@Override
publicvoidrun()
{
try
{
if(task.get()==1)
{
isStart=false;
ok.setText("开始倒计时");
//设置可编辑
setCanEdible1();
//设置默认选择的圆形按钮
cb1.setState(true);
//标记默认的倒计时
flag=true;
//设置可选择倒计时方式(圆点按钮)
setEnable();
//断网完成了,无需计时,直接断开获得剩余是时间的线程
leftTimeThread.interrupt();
//清空文本域
clearsTextField2();
clearsTextField3();
makeComfirmDialog(newJLabel("断网成功!
!
!
")).setVisible(true);
}
}
catch(InterruptedExceptione)
{
e.printStackTrace();
}
catch(ExecutionExceptione)
{
e.printStackTrace();
}
}
}
/**
*填充容器。
*@throwsIOException
*/
privatevoidaddPanel()throwsIOException
{
//填充容器
b1.add(nowTimeLabel);
b1.add(nowTimeTextField);
b2.add(selectLabel);
b2.add(cb1);//圆点按钮:
"倒计时"
b2.add(cb2);//圆点按钮:
"按具体时间"
b3.add(remainLabel);
b3.add(day1);
b3.add(day1Label);
b3.add(hour1);
b3.add(hour1Label);
b3.add(minute1);
b3.add(minute1Label);
b3.add(second1);
b3.add(second1Label);
b4.add(accodingLabel);
b4.add(day2);
b4.add(day2Label);
b4.add(hour2);
b4.add(hour2Label);
b4.add(minute2);
b4.add(minute2Label);
b4.add(second2);
b4.add(second2Label);
b5.add(chooseTimeLabel);
b5.add(selectTimeTextField);
b6.add(LeftTimeLabel);
b6.add(hourTextField);
b6.add(hour3Label);
b6.add(minuteTextField);
b6.add(minute3Label);
b6.add(secondTextField);
b6.add(second3Label);
b7.add(ok);
b7.add(exitSoft);
//将所有容器放进总容器里面
b8.add(b1);
b8.add(b2);
b8.add(b3);
b8.add(b4);
b8.add(b5);
b8.add(b6);
b8.add(b7);
//把大容器放进总框架里面
f.add(b8);
}
/**
*设置某些文本框是否可编辑
*/
privatevoidsetDefaultEdible()
{
nowTimeTextField.setEditable(false);
selectTimeTextField.setEditable(false);
hourTextField.setEditable(false);
minuteTextField.setEditable(false);
secondTextField.setEditable(false);
//默认情况下,具体时间那里不可编辑
setUnedible2();
}
privatevoidaddListener()
{
//点击“倒计时”圆按钮
cb1.addItemListener(newItemListener()
{
@Override
publicvoiditemStateChanged(ItemEvente)
{
//清空文字域信息
clearsTextField();
//将标记设置为true
flag=true;
//按具体时间那里不可编辑
setUnedible2();
//然后要保证按倒计时那里要可以编辑
setCanEdible1();
}
});
//点击“按具体时间”圆按钮
cb2.addItemListener(newItemListener()
{
@Override
publicvoiditemStateChanged(ItemEvente)
{
//将标记设置为true
flag=false;
//倒计时那里不可编辑
setUnedible1();
//然后要保证按具体时间那里要可以编辑
setCanEdible2();
//清空文字域信息
clearsTextField();
Stringtoday=newSimpleDateFormat("dd").format(newDate());
day2.setText(today);
}
});
//询问是否退出软件
exitSoft.addActionListener(newActionListener()
{
privateinti;
@Override
publicvoidactionPerformed(ActionEvente)
{
i=JOptionPane.showConfirmDialog(f,"确定退出吗?
","询问是否退出",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
if(i==JOptionPane.OK_OPTION)
System.exit(0);
if(i==JOptionPane.CANCEL_OPTION)
op.setVisible(false);
}
});
//添加确定按钮监听器
ok.addActionListener(newOKListener());
}
/**
*把框架放置中央
*@paramcomponent
*/
privatevoidsetLocationCenter(Componentcomponent){
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensioncompSize=component.getSize();
if(compSize.height>screenSize.height){
compSize.height=screenSize.height;
}
if(compSize.width>screenSize.width){
compSize.width=screenSize.width;
}
component.setLocation((screenSize.width-compSize.width)/2,
(screenSize.height-compSize.height)/2);
}
/**
*获得用户在文字域里面填写的数据。
*@paramtf文字域
*@paramlabel出错信息
*@return返回用户填写的数据int值
*@throwsException抛出无法解析字符串异常
*/
privateintgetUserInput(JTextFieldtf,Stringlabel)throwsException
{
inttime=0;
try
{
StringhourStr=tf.getText();
if(!
hourStr.equals(""))
{
time=Integer.parseInt(hourStr);
}
}
catch(Exceptione2)
{
makeComfirmDialog(newJLabel(label)).setVisible(true);
thrownewException();
}
returntime;
}
/**
*得到一个对话框
*@paramlable提示的内容
*@return返回一个JDialog对象的对话框(JDialog)
*/
privateJDialogmakeComfirmDialog(JLabellable)
{
JButtonyes=newJButton("确定");
finalJDialogdia=newJDialog(f,"对话框",false);
yes.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
dia.setVisible(false);
}
});
JPanelp=newJPanel();
p.add(yes);
dia.add(lable);
dia.add(p,BorderLayout.SOUTH);
setLocationCenter(dia);
dia.pack();
returndia;
}
/**
*清空文字域
*/
privatevoidclearsTextField()
{
day1.setText("");
day2.setText("");
hour1.setText("");
hour2.setText("");
minute1.setText("");
minute2.setText("");
second1.setText("");
second2.setText("");
}
privatevoidclearsTextField2()
{
hourTextField.setText("");
minuteTextField.setText("");
secondTextField.setText("");
}
privatevoidclearsTextField3()
{
day2.setText("");
hour2.setText("");
minute2.setText("");
second2.setText("");
selectTimeTextField.setText("");
}
privatevoidsetUnedible1()
{
day1.setEditable(false);
hour1.setEditable(false);
minute1.setEditable(false);
second1.setEditable(false);
}
privatevoidsetCanEdible1()
{
day1.setEditable(true);
hour1.setEditable(true);
minute1.setEditable(true);
second1.setEditable(true);
}
privatevoidsetUnedible2()
{
day2.setEditable(false);
hour2.setEditable(false);
minute2.setEditable(false);
second2.setEditable(false);
}
privatevoidsetCanEdible2()
{
day2.setEditable(true);
hour2.setEditable(true);
minute2.setEditable(true);
second2.setEditable(true);
}
/**
*当已经开始计时的时候,将圆点按钮设置为不可点击,
*当没有开始时,或者是停止倒计时时,将圆点按钮设置为可点击。
*/
privatevoidsetEna
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 软件