java 如何停止一个死循环?

我的java应用程序(含最大化最小化关闭按钮)要求实时刷新读取最新数据,但是现在要关闭这个窗口,关闭后又显示了,我想要跳出这个死循环关闭窗口,应该如何实现?我的死循环代码... 我的java应用程序(含最大化最小化关闭按钮)要求实时刷新读取最新数据,但是现在要关闭这个窗口,关闭后又显示了,我想要跳出这个死循环关闭窗口,应该如何实现?我的死循环代码如下:
int readerDataTime=1000; //读取数据库时间间隔单位毫秒
javax.swing.Timer timer = new javax.swing.Timer(readerDataTime, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(isClose==0){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String dburl ="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=ourMsg.mdb";//此为NO-DSN方式
Connection conn=DriverManager.getConnection(dburl);
Statement stmt=conn.createStatement();

int ii=0;
ResultSet rs;
rs=stmt.executeQuery("select TOP "+x_length+" * from T_sensordata where nodeid="+nodeID+" order by id desc ");

ii=0;
while(rs.next()){dataset.set(0,ii++,0,rs.getFloat(valueType));}
rs.close();
stmt.close();
conn.close();
}catch(Exception ee){}
}else
{
break;
}

chart2D.addDataset (dataset);

if(chartType==1){
panes.addTab ("温度变化", chart2D);
}else if(chartType==2)
{
panes.addTab("压力变化",chart2D);
}else if(chartType==3)
{
panes.addTab("湿度变化",chart2D);
}else{
panes.addTab("温度变化",chart2D);
}

frame.show();

}//actionPerformed
});
展开
 我来答
小傻

2015-11-08 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

java 停止一个死循环,可以使用break关键字,跳出循环,如下代码:

package com.qiu.lin.he;

public class Ceshi {
public static void main(String[] args) {
for (int i = 2; i > 0; i++) {
if (i == 80) {
System.out.println("死循环退出了");
break;

}
}
}
}

运行结果如下:

百度网友c16bf0d
2015-09-21
知道答主
回答量:18
采纳率:0%
帮助的人:2万
展开全部

java跳出循环的方法 

  1. break;  可以跳出当前循环

  2. continue; 结束本次循环开始下一次循环

如果你说的是强制结束死循环的进程的话 CTRL+ALT+DEL调出任务管理器 结束java进程即可

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
glassesbamboo
2010-06-14 · TA获得超过558个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:469万
展开全部
因为你的TIMER是另外一个线程在运行,所以你关闭了窗口但是这个独立的线程在运行。
方法就是在你关闭窗体时调用timer的stop() 方法。或者在循环体内设置停止条件,看你的代码是怎么写的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天道依旧愁华年
2010-06-14 · TA获得超过127个赞
知道答主
回答量:31
采纳率:0%
帮助的人:36.3万
展开全部
可以设置成员变量初始化为true比如boolean BK=true;
然后窗口关闭监听器中写入BK=false;
最后在死循环里写 if(BK==false)break;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
辰时劣人
2010-06-14 · TA获得超过117个赞
知道答主
回答量:57
采纳率:0%
帮助的人:65.8万
展开全部
明显你的frame.show()就不应该放在actionPerformed里面,窗口只要显示一次就可以了。另外,我怀疑你是否设置,关闭窗口的动作是退出程序。你用的Frame,建议用JFrame,对Frame进行拓展的了,Frame的很多方法过时了。
看看下面这个简化的例子:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.Timer;

public class test {

static int n=0;
static Random rd = new Random();
public static void main(String[] args) {

final JFrame frm = new JFrame( );
frm.setSize(300,400);

//设置 关闭窗口时动作 为 退出
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置标题 通过变量 n 测试是否成功刷新
frm.setTitle("标题-"+n++);
//显示窗口
frm.setVisible(true);

Timer t = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frm.setTitle("标题-"+n++);
//窗口大小也改变 随机
frm.setSize(rd.nextInt(500),rd.nextInt(600));
}
});

t.start(); //开始 刷新
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式