Wielowątkowość+SwingWorker
22 04 2008import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.SwingUtilities.*;
public class LiczRandom extends JFrame {
JTextField AA= new JTextField(”0″,7);
JTextField BB= new JTextField(”0″,7);
JButton button= new JButton(”Licz”);
JTextField aa= new JTextField(”0″,7);
JTextField bb= new JTextField(”0″,10);
public static void main(String args[]) {
new LiczRandom();
}
class Licz implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(isDouble(AA.getText()) && isDouble(BB.getText())) {
Double Aa= new Double(AA.getText());
Double Bb= new Double(BB.getText());
Double sumaAB= Aa + Bb;
aa.setText(sumaAB.toString());
Double bValue= new Double(bb.getText());
bValue+= sumaAB;
bb.setText(bValue.toString());
}
else {
aa.setText(”policz se sam”);
}
}
}
SwingWorker worker = new SwingWorker() {
public Object construct() {
bb.setText(”0″.toString());
boolean sprawdz = true;
while(sprawdz) {
try {
TimeUnit.SECONDS.sleep(1);
}
catch (InterruptedException e) {
}
Double bValue= new Double(bb.getText());
bValue= ((bValue + Math.random()) * 0.5);
bb.setText(bValue.toString());
}
return true;
}
};
public LiczRandom() {
super();
setTitle(”Uroki wielowatkowosci”);
setSize(600,50);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
Container okienko = getContentPane();
button.addActionListener(new Licz());
okienko.add(AA);
okienko.add(BB);
okienko.add(button);
okienko.add(aa);
okienko.add(bb);
worker.start();
setVisible(true);
}
public boolean isDouble(String xyz) {
try {
Double.parseDouble(xyz);
return true;
}
catch(NumberFormatException e) {
return false;
}
}
}