Boa noite!
Minha duvida é a seguinte:
Tenho duas threads e quero mostrar o estado dessas threads(RUNNABLE,TERMINATED…)
num JTextField.Quando uma thread mudar de estado seu valor deve ser
atualizado no seu JTextField.Como fazer?
Visualização do estado de uma Thread num JTextField
T
4 Respostas
D
estuda ai esse codigo…
import java.awt.BorderLayout;
import java.lang.Thread.State;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main {
private static Main main = new Main();
public static Main getInstance() {
return main;
}
private class MyThreadOne implements Runnable {
private State currentState;
private Thread innerThread;
public MyThreadOne() {
innerThread = new Thread(this);
innerThread.start();
}
@Override
public void run() {
currentState = Thread.currentThread().getState();
statusOne.setText(currentState.toString());
while(true) {
State state = Thread.currentThread().getState();
if (!currentState.equals(state)) {
currentState = state;
statusOne.setText(state.toString());
}
}
}
}
private class MyThreadTwo extends MyThreadOne {
private State currentState = null;
public MyThreadTwo() {
super();
}
@Override
public void run() {
currentState = Thread.currentThread().getState();
statusTwo.setText(currentState.toString());
while(true) {
State state = Thread.currentThread().getState();
if (!currentState.equals(state)) {
currentState = state;
statusTwo.setText(state.toString());
}
}
}
}
private JFrame frame;
private JTextField statusOne;
private JTextField statusTwo;
private MyThreadOne oneThread;
private MyThreadOne twoThread;
private Main() {
initComponents();
oneThread = new MyThreadOne();
twoThread = new MyThreadTwo();
}
private void initComponents() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
statusOne = new JTextField();
statusTwo = new JTextField();
frame.setLayout(new BorderLayout());
frame.add(statusOne, BorderLayout.NORTH);
frame.add(statusTwo, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
Main.getInstance();
}
}
T
blz,o exemplo melhorou um pouco.
poderia postar um codigo no qual um jbutton colocaria uma das threads para dormir e
que essa mudança fosse mostrada no JtextField?
D
é so adicionar um button no frame
depois tu adciona um evento nele, para quando o butão for pressionado, a thread dar um sleep ou interrupt
T
Eu tentei mas mesmo assim o jTextField nao mostra.
public void actionPerf(ActionEvent e) {
//Thread b=new Thread(oneThread);
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
.....
but.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
actionPerf(e);
}
});
Criado 6 de julho de 2012
Ultima resposta 7 de jul. de 2012
Respostas 4
Participantes 2