I created a button and I want these:
When the user clicks the button, it stays pressed like 3 seconds. After 3 seconds the button should be again look pressable. So the
You need to spawn a new thread when the button is clicked.
button3.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent event) {
try {
Thread t = new Thread(){
int count = 0;
setPressedIcon();
while(count < 4){
try{
Thread.sleep(1000);
count++;
}
}
setUnpressedIcon();
}
t.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
setPressedIcon();///??
public void widgetDefaultSelected(SelectionEvent event) {
}
});
If you do it in the same thread as your UI, everything will be halted during the 3 seconds.
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btn.setEnabled(false);
Timer timer = new Timer( 3000, new ActionListener(){
@Override
public void actionPerformed( ActionEvent e ){
btn.setEnabled( true );
}
}
timer.setRepeats( false );
timer.start();
}
});
I took the answer from @vels4j and added the javax.swing.Timer
to it
Instead of using a PUSH Button
, use a TOGGLE button. This way you can keep it pressed for as long as you require.
final boolean buttonPressed[] = new boolean[] { false };
final Button button = new Button(comp, SWT.TOGGLE);
button.setText("Test");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (buttonPressed[0]) {
button.setSelection(true);
return;
}
buttonPressed[0] = true;
Display.getDefault().timerExec(3000, new Runnable() {
@Override
public void run() {
button.setSelection(false);
buttonPressed[0] = false;
}
});
}
});
May this help you
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btn.setEnabled(false);
doSomething() ;
btn.setEnabled(true);
}
});
Try disabling it, putting the thread to sleep for three seconds, then enable it again:
private void setPressedIcon(){
try {
button3.setEnabled(false);
Thread.sleep(3000);
} catch(InterruptedException e) {
} finally {
//reenable the button in all cases
button3.setEnabled(true);
}