
如何跳出for循环 ?java中的 用eclipse编译的
之前的按钮监听代码如下:
// 循环调用 open claim release close
cycleButton = new JButton("Cycle");
cycleButton.setActionCommand("cycle");
cycleButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
for(int totaltimes=0;totaltimes<1000;totaltimes++){
try {
doOpen();
} catch (JposException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
doClaim();
} catch (JposException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
msr.release();
} catch (JposException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
msr.close();
} catch (JposException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
);
之后我又写了另一按钮,就是点击这个按钮停止循环
stopcycleButton = new JButton("StopCycle");
stopcycleButton.setActionCommand("stopcycle");
stopcycleButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
});
请问各位高手,这个代码里填什么语句
可以点击按钮终止循环啊!感激不尽!!
还有一个问题是,再添加一个checkbox
在里面显示循环的次数,应该如何添加?
代码是什么!!谢谢了!! 展开
给你个示例代码运行下:
核心是开启个新的线程,在给计数给界面赋值,新的线程通过一个变量isBegin进行控制,如果在按钮监听中直接写方法的话会导致界面阻塞,无法点击停止循环按钮.
@Override
public void run() {
int i = 0;
while (isBegin) {
this.label.setText(Integer.toString(++i) + "次");
this.checkBox.setText(Integer.toString(++i) + "次");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
package com.cc.test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test implements ActionListener, Runnable {
private JLabel label = null;
private JTextField textField = null;
private JCheckBox checkBox = null;
private boolean isBegin = false;
private static final String START = "start";
private static final String STOP = "stop";
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
JPanel panel = new Test().getTextBtnPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(600, 450));
frame.setVisible(true);
}
private JPanel getTextBtnPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(this.getTextField(), BorderLayout.CENTER);
panel.add(this.getNorthPanel(), BorderLayout.SOUTH);
return panel;
}
private JTextField getTextField() {
this.textField = new JTextField();
this.textField.setPreferredSize(new Dimension(200, 40));
return this.textField;
}
private JPanel getNorthPanel() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
panel.add(this.getStartBtn());
panel.add(this.getStopButton());
panel.add(this.getLabel());
panel.add(this.getCheckBox());
return panel;
}
private JLabel getLabel() {
this.label = new JLabel();
return label;
}
private JCheckBox getCheckBox() {
this.checkBox = new JCheckBox();
this.checkBox.setForeground(Color.RED);
return this.checkBox;
}
private JButton getStartBtn() {
JButton btn = new JButton("开始循环");
btn.setActionCommand(Test.START);
btn.addActionListener(this);
return btn;
}
private JButton getStopButton() {
JButton btn = new JButton("停止循环");
btn.setActionCommand(Test.STOP);
btn.addActionListener(this);
return btn;
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(START)) {
this.isBegin = true;
new Thread(this).start();
}
if (e.getActionCommand().equals(STOP)) {
this.isBegin = false;
}
}
@Override
public void run() {
int i = 0;
while (isBegin) {
this.label.setText(Integer.toString(++i) + "次");
this.checkBox.setText(Integer.toString(++i) + "次");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
点击按钮控制这个变量的布尔值就行了。
具体加在哪 ,怎么写啊,谢谢了!!
已经贴出了了啊
不好意思,刚刚走神。Boolean b = true;……
for(int totaltimes=0;totaltimes<1000;totaltimes++){
if(b){
try {
doOpen();
} catch (JposException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
……
public void actionPerformed(ActionEvent e) {
b=false; }
试试看吧