break NOTNULL;
}
- // run through buttons for initialValue first so can set a final
- // timeoutThreadF
+ // run through buttons for initialValue first so we can set (and start)
+ // a final timeoutThreadF to include (and interrupt) in the button
+ // actions
Thread timeoutThread = null;
for (int i = 0; i < options.length; i++)
{
JButton jb = buttons[i];
if (o.equals(initialValue))
{
- initialValueButton = jb;
- if (timeout > 0 && initialValueButton != null
- && initialValueButton instanceof JButton)
+ if (timeout > 0 && jb != null && jb instanceof JButton)
{
- Runnable timeoutClose = () -> {
+ // after timeout ms click the default button
+ timeoutThread = new Thread(() -> {
try
{
Thread.sleep(timeout);
"Dialog timeout interrupted. Probably a button pressed.");
}
jb.doClick();
- };
- timeoutThread = new Thread(timeoutClose);
+ });
}
+ initialValueButton = jb;
+ break;
}
}
final Thread timeoutThreadF = timeoutThread;
- timeoutThreadF.start();
+ if (timeoutThreadF != null)
+ {
+ timeoutThreadF.start();
+ }
int[] buttonActions = { JOptionPane.YES_OPTION,
JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION };