Ciao a tutti
sto cercando creare una msgBox che visualizzi un timer ma ancora non funziona, non capisco dove sbaglio, qualcuno mi puoi aiutare?
vi posto di seguito i codice:
1) ho creato una classe MsgBox
codice:
public class MsgBox extends JDialog {
public MsgBox() {
}
public static void timedMessageBox(Component parentComponent,
Object message, String title, int messageType, long time) {
JOptionPane optionPane = new JOptionPane(message, messageType);
final JDialog dialog = optionPane.createDialog(parentComponent, title);
dialog.setVisible(true);
}
}
2) in un altra classe, quella principale, instanzio un oggetto della classe MsgBox e dō il suo metodo repaint in pasto ad un therad in questo modo
//classe principale
//...
/...
public MsgBox msgBox=new MsgBox();
codice:
msgBox.timedMessageBox(null, "This box will close automatically after seconds " + currentTimeMsgBoxCheck, "Timed message box", JOptionPane.INFORMATION_MESSAGE, currentTimeMsgBoxCheck);
checkTimeMsgBoxThread();//chiamo il thread per fare il repaint su msgBox e aggiornare currentTimeMsgBoxCheck
dove la var: "currentTimeMsgBoxCheck" non č altro che un long che viene valorizzato all'interno di un thread separato
codice:
public void checkTimeMsgBoxThread() {
parallelCheckTimeMsgBoxThread toRun = new parallelCheckTimeMsgBoxThread();
Thread startCheckMsgBoxConnection = new Thread(toRun);
startCheckMsgBoxConnection.start();
}
public class parallelCheckTimeMsgBoxThread implements Runnable{
public void run() {
try {
while(true) {
Thread.sleep(1);
currentTimeMsgBoxCheck=System.currentTimeMillis()
msgBox.repaint();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
praticamente la msgBox continua a riaprirsi e ad aggiornare la var "currentTimeMsgBoxCheck" tutte le vote che clicco sul tasto "Ok".
Io invece vorrei che si aprisse una volta sola e mi facesse vedere il tempo che passa.
Dove sbaglio?