问题是:我有一个摇摆应用程序。只有一种带有 2 个 btns 的表单(“开始”、“停止”)。在这些 btns 上,我在里面添加了带有线程类的 ActionListener。
当我单击 btn“开始”时,我想在新线程中开始一些工作,并在单击 btn“停止”时结束该工作。与此有点相似的代码在控制台中可以正常工作,但在摇摆不定。任何帮助表示赞赏。提前致谢。)
class Action implements ActionListener{
class MyThread extends Thread{
boolean live = true;
@Override
public void run() {
while(live)
System.out.println("doing...");
}
public void shutDown(){
live = false;
}
}
@Override
public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
MyThread t = new MyThread();
switch (source.getText()) {
case "Start":
t.start();
break;
case "Stop":
t.shutDown();
break;
}
还有那个简单的形式
public class App extends JFrame {
public static void main(String[] args) {
App app = new App();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setVisible(true);
JButton btn1 = new JButton("Start");
JButton btn2 = new JButton("Stop");
app.getContentPane().add(btn1, BorderLayout.WEST);
app.getContentPane().add(btn2, BorderLayout.EAST);
Action action = new Action();
btn1.addActionListener(action);
btn2.addActionListener(action);
}
}