Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JOptionPane without button

I need to present a information message that needs to be in the screen for 5 seconds, during this time, user can't close the dialog. The specification says clearly that the dialog shouldn't have any button. Is there a way I can use JoptionPane.showMessageDialog in a way that the dialog have no button?

like image 852
brevleq Avatar asked Jan 02 '13 18:01

brevleq


1 Answers

How about this way using showOptionDialog, maybe not showMessageDialog, but the same thing when we have no buttons or place to enter text (downfall is it can be closed by user):

enter image description here

  JOptionPane.showOptionDialog(null, "Hello","Empty?", JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, null, new Object[]{}, null);

UPDATE

Here is another way, it uses JOptionPane and JDialog (even better as it is uncloseable by user):

enter image description here

final JOptionPane optionPane = new JOptionPane("Hello world", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);

final JDialog dialog = new JDialog();
dialog.setTitle("Message");
dialog.setModal(true);

dialog.setContentPane(optionPane);

dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();

//create timer to dispose of dialog after 5 seconds
Timer timer = new Timer(5000, new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        dialog.dispose();
    }
});
timer.setRepeats(false);//the timer should only go off once

//start timer to close JDialog as dialog modal we must start the timer before its visible
timer.start();

dialog.setVisible(true);
like image 124
David Kroukamp Avatar answered Oct 17 '22 14:10

David Kroukamp