另一个按钮函数(Java)中循环函数的中断(停止)按钮
我一直在努力使按钮B(停止)能够在循环函数内部打破循环。我只需要停止循环或被按钮B(停止)按钮打断。谢谢。:)[我已经试过寻找,但没有找到任何对我有帮助的结果。]另一个按钮函数(Java)中循环函数的中断(停止)按钮,java,loops,jbutton,break,Java,Loops,Jbutton,Break,我一直在努力使按钮B(停止)能够在循环函数内部打破循环。我只需要停止循环或被按钮B(停止)按钮打断。谢谢。:)[我已经试过寻找,但没有找到任何对我有帮助的结果。] /* * */ package stopwatch; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; import java.util.logging.Logger
/*
*
*/
package stopwatch;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
/**
*
* @author C
*/
public class Stopwatch {
/**
* @param args the command line arguments
*/
private static int abc = 0;
private static void print (int x, String b) {
if ( x == 69 ) {
System.out.println(b);
}
if ( b == null ) {
System.out.println(x);
}
}
private static void changea(int val) {
abc = val;
}
public static void main(String[] args) {
JFrame aeeb = new JFrame("Stopwatch : Start");
aeeb.setVisible(true);
aeeb.setSize(50, 150);
JButton button = new JButton("Start");
button.setVisible(true);
aeeb.add(button);
JFrame aeec = new JFrame("Stopwatch : Stop");
aeec.setVisible(true);
aeec.setSize(50, 150);
final JButton buttonb = new JButton("Stop");
buttonb.setVisible(true);
aeec.add(buttonb);
button.addActionListener(new ActionListener() {
int x = 1;
int msec = 0;
int sec = 0;
int min = 0;
int hour = 0;
public void actionPerformed(ActionEvent e)
{
if ( x == 1 ) {
print(69, "Stopwatch is running!");
x = 0;
int xd = 10;
while( xd < 20 ) {
if ( msec == 1000 ) {
sec = sec + 1;
msec = 0;
}
if ( sec == 60 ) {
min = min + 1;
sec = 0;
}
if ( min == 60 ) {
hour = hour + 1;
min = 0;
}
msec++;
if ( msec == 1000 ) {
sec = sec + 1;
msec = 0;
}
if ( sec == 60 ) {
min = min + 1;
sec = 0;
}
if ( min == 60 ) {
hour = hour + 1;
min = 0;
}
try {
Thread.sleep(1);
} catch (InterruptedException ex) {
Logger.getLogger(Stopwatch.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
if ( x == 0 ) {
print(69, "Stopwatch is running already!");
}
}
});
}
}
/*
*
*/
包装秒表;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
/**
*
*@C作者
*/
公共类秒表{
/**
*@param指定命令行参数
*/
私有静态int abc=0;
私有静态无效打印(整数x,字符串b){
如果(x==69){
系统输出打印ln(b);
}
如果(b==null){
系统输出println(x);
}
}
专用静态无效更改a(int val){
abc=val;
}
公共静态void main(字符串[]args){
JFrame aeeb=新JFrame(“秒表:启动”);
aeeb.setVisible(真);
aeeb.setSize(50,150);
JButton按钮=新JButton(“开始”);
按钮。设置可见(真);
aeeb.add(按钮);
JFrame aeec=新JFrame(“秒表:停止”);
aeec.setVisible(真);
aeec.setSize(50,150);
最终按钮B=新按钮(“停止”);
按钮b.setVisible(true);
aeec.添加(按钮b);
addActionListener(新建ActionListener()){
int x=1;
整数毫秒=0;
整数秒=0;
int min=0;
整小时=0;
已执行的公共无效操作(操作事件e)
{
如果(x==1){
打印(69,“秒表正在运行!”);
x=0;
int xd=10;
而(xd<20){
如果(毫秒==1000){
秒=秒+1;
msec=0;
}
如果(秒=60){
min=min+1;
秒=0;
}
如果(最小==60){
小时=小时+1;
最小值=0;
}
毫秒++;
如果(毫秒==1000){
秒=秒+1;
msec=0;
}
如果(秒=60){
min=min+1;
秒=0;
}
如果(最小==60){
小时=小时+1;
最小值=0;
}
试一试{
睡眠(1);
}捕获(中断异常例外){
Logger.getLogger(Stopwatch.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
如果(x==0){
打印(69,“秒表已在运行!”);
}
}
});
}
}
按下停止按钮时,使用标志并将其设置为false
public class Stopwatch {
...
private boolean isRunning = false;
...
开始按钮动作中的循环:
...
isRunning = true;
...
while(isRunning) {
...
停止按钮:
final JButton buttonb = new JButton("Stop");
buttonb.setVisible(true);
aeec.add(buttonb);
aeec.addActionListener(new ActionListener(){
isRunning = false;
});
也许可以这样做:
public class stopwatch{
public boolean isOn = true;
// stuff
// loop:
if(!something.isOn){
break;
}
// rest of loop
}
按下按钮时:
Stopwatch.isOn = false;
事件处理程序中不应该有长操作。您正在挂起事件调度线程。此外,您的循环是一个无止境的循环,因为xd
永远不会改变。您应该使用事件处理程序设计秒表,并且始终仅对短操作(如在变量中设置值)使用事件处理程序。