1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingWorker;
public class ExempleSwingWorker extends JPanel {
private JLabel resultat;
private JButton buttonLancer;
private JButton buttonArreter;
private Worker swingworker;
private int counter=0;
public ExempleSwingWorker() {
super(new BorderLayout());
resultat = new JLabel();
resultat.setHorizontalAlignment(SwingConstants.CENTER);;
add(resultat, BorderLayout.CENTER);
JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
buttonLancer = new JButton("Lancer");
buttonArreter = new JButton("Arreter");
buttonArreter.setEnabled(false);
buttons.add(buttonLancer);
buttons.add(buttonArreter);
add(buttons, BorderLayout.SOUTH);
buttonLancer.addActionListener(new LancerListener());
buttonArreter.addActionListener(new ArreterListener());
}
public static void main(String[] args) {
JFrame frame = new JFrame("Démo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ExempleSwingWorker());
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private class Worker extends SwingWorker<Object, String> {
@Override
protected Object doInBackground() throws Exception {
while(!isCancelled()) {
counter++;
publish(String.valueOf(counter));
try {
Thread.sleep(1000);
}
catch(InterruptedException e) {
break;
}
}
return null;
}
@Override
protected void process(List<String> chunks) {
if ( !chunks.isEmpty() ) {
resultat.setText(chunks.get(chunks.size()-1));
}
}
}
private class LancerListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
swingworker = new Worker();
swingworker.execute();
buttonLancer.setEnabled(false);
buttonArreter.setEnabled(true);
}
}
private class ArreterListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
swingworker.cancel(true);
buttonArreter.setEnabled(false);
buttonLancer.setEnabled(true);
}
}
} |
Partager