Question: I just want to implement a status dialog. How to show a JDialog which blocks the user input but allow the parent window processing its own work?

Answer: 
You can use a modal JDialog or JOptionPane (which really is nothing more than a specialized modal JDialog) for this, just be sure to

* the work is not to be done in a parent "window"
* but rather it should be done in a background thread
* and this thread should be started prior to setting the dialog visible.
* Use a SwingWorker for this background thread, and then your dialog can display quantitative progress information by adding a PropertyChangeListener and having the SwingWorker update its progress property.
You can create and customize different kind of dialog using `JOptionPane`. Have a look at [JOptionPane Features](http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#features). Also, have to look at 

* [JDialog(Dialog owner, boolean modal)](http://docs.oracle.com/javase/7/docs/api/javax/swing/JDialog.html#JDialog%28java.awt.Dialog,%20boolean%29)
* [ModalityTypes](http://docs.oracle.com/javase/7/docs/api/java/awt/Dialog.html#setModalityType%28java.awt.Dialog.ModalityType%29)
* The best of all could be [JOptionPane](http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#features)