PDA

View Full Version : چطور اگر کاربر چند ثانیه عملی رو انجام نده بهش اعلام کنم یا اخطار بدم؟



ali zi zeperto
شنبه 27 آذر 1389, 12:12 عصر
سلام
من می خوام توی برنامه ام به کاربر ۳۰ ثانیه زمان بدم که یه عملی رو انجام بده به فرض وارد کردن پسورد.اگر پسورد رو وارد نکرد من در مقابل یه کاری انجام بدم مثلا حساب کاربریش رو مسدود کنم.
برای کنترل زمان چیکار باید بکنم؟خودم به فکرم رسید که با multi thread انجام بدم اما نتونستم.
کسی می تونه راهنمایی کنه که چه باید بکنم؟

javaphantom
شنبه 27 آذر 1389, 12:46 عصر
سلام
من می خوام توی برنامه ام به کاربر ۳۰ ثانیه زمان بدم که یه عملی رو انجام بده به فرض وارد کردن پسورد.اگر پسورد رو وارد نکرد من در مقابل یه کاری انجام بدم مثلا حساب کاربریش رو مسدود کنم.
برای کنترل زمان چیکار باید بکنم؟خودم به فکرم رسید که با multi thread انجام بدم اما نتونستم.
کسی می تونه راهنمایی کنه که چه باید بکنم؟




public class MyFrame extends JFrame {

private JPanel myPanel;
private MyTimer myTimer;

public MyFrame() {
this.myTimer = new MyTimer(this);
Thread t = new Thread(this.myTimer);
t.start();
this.setBounds(new Rectangle(200,200));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().add(this.getMyPanel());

this.setVisible(true);

}

public JPanel getMyPanel() {
if (this.myPanel == null) {
this.myPanel = new JPanel();
this.myPanel.addMouseListener(new MouseAdapter(){
/**
* {@inheritDoc}
*/
@Override
public void mouseClicked(MouseEvent e) {
myTimer.resetMe();
}
});
}
return myPanel;
}

public void rest() {
JOptionPane.showMessageDialog(null,"time is over");
myTimer.resetMe();
}

public static void main(String[] s) {
new MyFrame();
}
}




public class MyTimer implements Runnable {

private int timer = 10; // 10 second

private MyFrame myFrame;

private boolean flag = false;

public MyTimer(MyFrame myFrame) {
this.myFrame = myFrame;
}

public void resetMe() {
System.out.println("reset");
timer = 10;
this.flag = flag;
}

public void run() {
while(true) {
while(!flag) {
timer --;
System.out.println("timer = " + timer);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

if (timer == 0) {
myFrame.rest();
}
}
}
}
}